JavaScript 16.díl, objekty

Napsal O webu (») 25. 12. 2006 v kategorii Grafika, CSS, přečteno: 5303×

Objekty, základní použití, vlatnosti

Co je to objekt?

Je (pro programátora) souhrn vlastností a schopností sloučené do jednoho datového prvku.
Objektem může být například strom, jeho vlastnosti můžou být například:
Vlastnost Hodnota
typ stromu
lípa
Barva kmenu
hnědá
Výška
4
A tak by vlastnosti mohli pokračovat, definujeme pouze vlastnosti, teré nás zajímají. Dále má také strom nějaké schopnosti:
Schopnost
Hodnota
Kořeny
Živí stom
Listí
Opadává na podzim
Květy
Kvetou

Tímto stromovým příkladem jsme chtěl ukázat, že objekty jsou všechny věci kolem nás. Pokud se ovšem zaměříme na internetový prohlížeč může být takovýmto objektem například: samotné okno prohlížeče, nějaký prvek uvnitř (tlačítko, textové pole), historie atd.

DOM

DOM = Document Object Model = Objektový model dokumentu je sada objektů HTML, XHTML, XML, které jsou hierarchicky uspořádány. DOM je API umožňující zjištění či změnu obsahu, struktury, nebo stylu dokumentu nebo jeho částí. DOM je standard, který je spravován konsorciem W3Ckde lze najít také potřebnou dokumentaci (v angličtině).

Jak pracovat s objekty v JavaScriptu?

Objekty jsou dostupné přes tzv. tečkovou notaci: objekt.podobjekt.podobjekt_podobjektu.vlastnost_nebo_metoda(). Například pokud

Vlastnosti

Pokud chceme zjistit vlastnost objektu stačí vlastnost zavolat např.:
var promenna=objekt.vlastnost;
var barva_pozadi=window.document.bgColor; // vloží do proměnné např: #ffffff při bílém pozadí


Naopak vlastnost nastavíme:
objekt.vlastnost=hodnota;
window.document.bgColor="blue"  //nastaví modré pozadí


Metody

Metodu spustíte pomocí:
objekt.metoda;
window.document.write("Text");  //vypíše do okna dokumentu text: "Text"


Možná jste si všimli, že u objektů, které jsme používal v minulých dílech jsem nyní přidal prefix "window.". Jelikož je to objekt, který se používá nejčastěji a komplikoval by psaní je možné ho vynechat.


Vytváříme vlastní objekt

Vlastní objekty jsou dobré pro pohodlnou práci s daty, ubude nám tím spousta práce. Ukážeme si na příkladu, nejprve si vytvoříme funkci:
function osoba(jmeno, vek, pohlavi) {
    this.jmeno = jmeno
    this.vek = vek
    this.pohlavi = pohlavi
 }

V funkci si všimněte objektu this, který zastupuje vždy konkrétní volaný objekt. Pokud tedy (v dalším kroku budeme dělat) vytvoříme objekt jana, dosadí se vždy za this proměnná jana. Tímto vytvořením funkce jsme nevytvořili ještě objekt, ten vytvoříme:
  martin = new osoba("Martin Novak", 33, "M");
  jana = new osoba("Jana Novakova", 34, "Z");

Pomocí new jsme vytvořili objekt resp. dva objekty (martin a jana). Pokud by jsme s nimi nyní chtěli pracovat a vytisknout například věk od Jany Novákové a potom třeba i Martina Nováka zadáte:
document.write(jana.vek); //vypise 34
document.write(martin.vek); //vypise 33


Co se stalo? Vytvořením objektu jsme do něj vložili také některé data, ke kterým nyní přistupujeme. Pokud by jsme se třeba spletli nebo chtěli data v objektu nějak poupravit a Janu omladit, stačí zadat:
jana.vek=19;
document.write(jana.vek); //vypise 19

Nyní má jana 19 let jak dokazuje výpis po provedení přiřazení.

Ukážeme si ještě jedno vytvoření objektu se stejnými vlastnostmi, ale bez použití funkce:
jana = {jmeno:"Jana Novakova", vek:34, pohlavi:"Z"}

Takto můžete mít N počet parametrů. Pokud by jste chtěli vytvořit podobjekt přibude jako hodnota další pár složených závorek. Pokud by jste se pak k těmto podhodnotám chtěli dostat (například jméno majitelky auta: objekt jana) budete pracovat s tečkovou notací:
  auto = {znacka:"Škoda", typ:"120", rok_vyroby: 1983, majitel: jana}
  document.write(auto.majitel.jmeno); //vypise Jana Novakova



V dalším díle budeme objekty pokračovat.

Autor: Martin
Štítky: JavaScript
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Lemming z IP 89.233.145.*** | 28.6.2012 11:34
Jen takový postřeh, vždy mě naštve, když vidím v dalším díle budeme pokračovat ale na další díl neexistuje odkaz smile Proč tam hned není href na text "dalším díle" hm? smile
CoolLamer z IP 83.208.213.*** | 1.9.2012 20:47
svatá pravda smile


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel jedenáct a jedenáct