Hledat
Přihlásit se
  • Věda a technika
  • Herní doupě
  • Tipy pro PC
  • IT Byznys
  • Mobily
  • Počítače
  • Počítače
  • Témata
  • Poradna
  • Diskuzní fórum
  • Video
  • Bazar
  • Blogy
  • MĚŘENÍ RYCHLOSTI
  • RSS
  • Facebook Twitter Google+ YouTube
  • Hardware
  • Software
  • Počítače
  • Notebooky
  • Služby na webu
  • Apple
  • Google
  • Microsoft
  • Seznam
  • Tiskové zprávy
Další témata
  • Týden Živě
  • Zprávy Živě
  • Testy
  • Pitvy
Všechna videa
X

Doporučit článek

Vaše jméno:

Váš e-mail:

E-mail adresáta:

Komentář:

kontrolní kód

Odeslat

Blogy Živě » O programování a všem okolo

O programování a všem okolo

Články vytvořil Jiří Hrebenar
 

Javascriptová vlastnost prototype - 3

3. 8. 2009, gisat_cz

PŘEPISOVÁNÍ PROTOTYPE VLASTNOSTÍ VLASTNÍMI VLASTNOSTMI

Jak jsme si již v minulých dílech řekli, jestliže  engine javascriptu nenajde vlastní vlastnost, hledá ji ve vlastnostech prototype.

Zkusme se zaměřit na následující příklad:

function Data(den){

this.den=den;  }

Data. prototype.den=”Neděle”;

Zkuste se zamyslet nad tím co se vypíše jestliže budu definovat nový objekt Data a posléze zavolám proměnnou den:

var objekt=new Data(”Pondělí”);

dowument.write(objekt.den);

Čekali jste, že se vypíše slovo Neděle? Tak tomu ve skutečnosti není, v konstruktoru objektu má proměnná den stanovenou hodnotu Pondělí a Tudíž se vypíše slovo Pondělí.

Ovšem pokud smažete vlastnost den, tak prototypová vlastnost den stále existuje a jakoby prosvítá v pozadí:

delete objekt.den;

document.write(objekt.den);

Výsledek bude slovo Neděle.

Pokud smažete vlastnost den, v prototypové vlastnosti si můžete vždy vytvořit svou novou vlastnost.

PROCHÁZENÍ VLASTNOSTMI OBJEKTU POMOCÍ ITERACE(cyklu for):

Jak možná víte pole můžeme procházet pomocí “speciálního” cyklu for in. Například takto:

var a=["a","b","c"];

for (var i in a) {
document.write(a[i]);
}

Pole jsou také určitým typem objektu, takže podobnou iteraci můžeme využít při procházení vlastností objektu:

var o = {o1: 1, o2: 2};
for (var i in o) {document.write(i + ‘=’ + o[i]);
}

Výsledek bude o1=1 o2=2

Jak vidíte objekt je definován literální cestou. Iterační procházení vlastnostmi objektu má však i své stinné stránky, například:

  • všechny vlastnosti nemůžeme zobrazit pomocí iterace. Je tomu tak například u vlastnosti length a vlastnostech funkce constructor. Vlastnosti objevené pomocí iterace nazýváme enumeračními vlastnostmi. Kontrolu zda se jedná nebo nejedná o enumerační proměnné můžete provést pomocí metody propertyIsEnumerable(). Tuto metodu poykstuje každý objekt.
  • Vlastnosti deklarované pomocí prototype jsou také enumeračními vlastnostmi. Zjistit například jestli se jedná o vlastní vlastnost nebo vlastnost prototype můžete pomocí metody hasOwnProperty().
  • propertyIsEnumerable() tato metoda navrátí false pokud je testovaná na prototypové proměnné.

Všechny výše uvedené metody si ukážeme, povíme si jak a kdy je použít přímo na trefném příkladu:

function Auto(typ, barva) {
this.typ = typ;
this.barva = barva;
this.metoda = function(){return 1;}
}
Auto.prototype.cena = 450000;
Auto.prototype.rok_vyroby = 2009;

Vytvoříme objekt našeho Auta:

var auticko=new Auto(”Škoda Roomster”,”červená”);

Nyní projdeme všechny vlastnosti objektu Auto pomocí cyklu for in, objeví se všechny proměnné i s prototypovými vlastnostmi:

for (var vlastnost in auticko) {
document.write(vlastnost + ‘ = ‘ + auticko[vlastnost]+”<br/>”);
}

Výsledek bude:

typ = Škoda Roomster

barva=červená

metoda = function(){return 1;}

cena = 450000

rok_vyroby=2009

Pokud chcete zjistit která proměnná je vlastní(tedy není uvedená v prototype) použijte metodu hasOwnProperty():

auticko.hasOwnProperty(’typ’) ;

Výsledek bude true   , toto je vlastní vlastnost

auticko.hasOwnProperty(’cena’) ;

Výsledek bude true   , toto není vlastní vlastnost, je dná se o prototypovou vlastnost

Nyní budeme chtít vypsat pouze vlastní hodnoty objektu:

for (var vlastnost in auticko) {

if (auticko.hasOwnProperty(vlastnost)) {
document.write(vlastnost + ‘ = ‘ + auticko[vlastnost]+”<br/>”);
}}

Výsledek bude:

typ = Škoda Roomster

barva=červená

metoda = function(){return 1;}


Publikováno v rubrice Javascript. Reakce v diskuzi lze sledovat prostřednictvím RSS 2.0. Můžete přidat komentář, nebo se na článek odkázat ze svého webu.

« Znovuzrození HD formátu v Číně
Google obrázky - rozšířené možnosti hledání »
 

Přidat komentář

*
Opište prosím text z obrázku.
Anti-Spam Image


Aktuální články a bleskovky

Lenovo uvádí nové ThinkPady s čipy Ivy Bridge
Lenovo uvádí nové ThinkPady s čipy Ivy Bridge
Brýle Google Glass jsou patentované
Brýle Google Glass jsou patentované
Ifttt.com: Propojte a automatizujte svůj internet
Ifttt.com: Propojte a automatizujte svůj internet
Nejlepší programy pro práci s Wi-Fi
Nejlepší programy pro práci s Wi-Fi



O programování a všem okolo využívá WordPress MU a běží na Blog.zive.cz. Vytvořte si svůj vlastní blog
Sledování přes RSS: články a komentáře


  • Archivy

    • Duben 2012
    • Květen 2011
    • Leden 2011
    • Prosinec 2010
    • Listopad 2010
    • Říjen 2010
    • Květen 2010
    • Březen 2010
    • Únor 2010
    • Leden 2010
    • Prosinec 2009
    • Září 2009
    • Srpen 2009
    • Červenec 2009
    • Srpen 2008
  • Rubriky

    • AJAX (7)
    • Awk a sed (2)
    • CSS, HTML (3)
    • Java (3)
    • Javascript (25)
    • Javascript frameworky (4)
    • Nezařazené (11)
    • Opensource (21)
    • Ostatní (10)
    • PHP (7)
    • PHP,MySQL a APACHE (1)
    • Ruby (16)
    • Sociální sítě (15)
    • UNIX (5)
    • XML (3)
    • Zprávy (61)
  • Spřátelené blogy

    lara.111: my clever blog
  • Twitter

    • Oh miluju krásné kytky, je normální když chlap má rád kytky? :-D~~~amp~~~lt;3 Jo já vím, jsem netradiční, to jsem prostě já... http://t.co/PoghKVpG
    • Haha :-)~~~amp~~~lt;3 http://t.co/R28S4u0Z
    • http://t.co/ZPcDPjdA
    • http://t.co/byQssIuP
    • Netřeba konspiračních teorií, pokud někdo krade, je zloděj. Pokud se někdo nechá uplácet, je to křivák. S... http://t.co/UeNF8J2Q
  • Administrace

    • Přihlásit se

1210_Computer.png

Časopis Computer

  • Nakupujte v zahraničí
  • Test 7 čteček elektronických knih
  • Technologie: nové standardy digitálního vysílání
  • Přehled cloudových uložišť
  • Poradíme s výběrem kamery na dovolenou

Partnerská sekce pro IT profesionály:
Microsoft TechNet/MSDN


Video Živě

Bluetooth stojánky pro Android: Philips AS111, AS141 a AS351
Ifttt.com -- založení úkolu
Zprávy Živě - 12. května 2012
iPad docky Logitech AV Stand a Logitech Speaker Stand

další videa »






Mladá Fronta a.s. Mladá Fronta a.s.
Tiráž | Autoři | Připomínky | Odběr novinek | RSS | Textová verze
Copyright 2000–2012 Mladá fronta a.s. | Inzerce: onlinesales@mf.cz | Kontakt na redakci | Návštěvnost měří NetMonitor