Hlavní obsah
Shrnutí: Objekty
Zde je přehled toho, co jsme probrali v tomto tutoriálu o objektech.
Existuje mnoho typů hodnot, které můžeme uložit do JavaScriptových proměnných, a někdy chceme ukládat spoustu příbuzných hodnot: a to je případ, kdy na řadu přichází objekty!
Objekt je datový typ, který nám umožňuje ukládat řadu vlastností do jedné proměnné. Chceme-li vytvořit objekt, jako vždy nejdříve deklarujeme proměnnou a pak pomocí složených závorek ohraničíme skupiny klíčových vlastností:
var objektNázev = {
vlastnostNázev: vlastnostHodnota,
vlastnostNázev: vlastnostHodnota,
...
};
Zde je objekt, který popisuje Winstona - tento objekt má dvě vlastnosti,
rodné město
a vlasy
, a každá z hodnot vlastností je řetězcem:var aboutWinston = {
město: "Mountain View, CA",
vlasy: "ne"
};
Zde je složitější objekt, který popisuje kočku se čtyřmi vlastnostmi-
věk
, barvaSrsti
, oblíbené
, a narozeniny
.var lizzieKočka = {
věk: 18,
barvaSrsti: "šedá",
oblíbené: ["šanta", "mléko"],
narozeniny: {"měsíc": 7, "den": 17, "rok": 1994}
};
Všimni si, jak každá vlastnost ukládá jiný typ dat-
věk
uloží číslo, barvaSrsti
ukládá řetězec, oblíbené
ukládá pole a narozeniny
ukládá jiný objekt. To je skvělá věc na objektech (dobře, jedna ze skvělých věcí) - mohou se uvnitř nich ukládat jiné objekty! Takže můžeš používat hluboce vnořené objekty k popisu komplexních dat.Můžeš také narazit na objekty deklarované pomocí uvozovek kolem názvů vlastností, jako zde:
var aboutWinston = {
"město": "Mountain View, CA",
"vlasy": "ne"
};
To je ekvivalent toho, co jsme předtím viděli bez uvozovek, ale trvá déle to napsat. Jediný případ, kdy skutečně potřebuješ uvozovky je, pokud obsahuje jméno tvé vlastnosti mezeru, jako zde:
var aboutWinston = {
"jeho vlasy": "žádné"
};
Zde musíme použít uvozovky, protože by jinak byl interpretátor JavaScriptu zmatený. Mám pro tebe jeden tip: prostě vůbec nepoužívej mezery v názvech tvých vlastností! Pak totiž nikdy nemusíš používat uvozovky kolem názvů vlastností.
Přístup k vlastnostem objektu
Objekt se k ničemu nehodí, pokud k němu nemáme přístup a nemůžeme pracovat s hodnotami různých vlastností. Můžeme to provést dvěma způsoby - zaprvé pomocí toho, co nazýváme "tečkový zápis", kdy napíšeme název proměnné, po němž následuje "." , a poté název vlastnosti:
var aboutWinston = {
město: "Mountain View, CA",
vlasy: "ne"
};
text("Winston pochází z města " + aboutWinston.město, 100, 100);
text("Má Winston vlasy? " + aboutWinston.vlasy, 100, 150);
Můžeme také použít "závorkový zápis", který vypadá podobně jako přístup k prvkům pole, kde napíšeme název proměnné, pak hranaté závorky s názvem vlastnosti v uvozovkách:
var jehoMěsto = aboutWinston["město"];
var jehoVlasy = aboutWinston["vlasy"];
Pokud se pokusíme získat přístup k vlastnosti, která neexistuje, uvidíme chybu "undefined":
text("Winstonův životní cíl je " + aboutWinston.lifeGoal, 100, 150);
Úprava vlastností objektu
Stejně jako při ukládání dalších datových typů do proměnných, hodnoty vlastností objektu můžeme kdykoli během programu změnit pomocí tečkového nebo závorkového zápisu:
aboutWinston.vlasy = "kudrnaté"; // Winston nosí paruku!
Můžeme také přidat zcela nové vlastnosti!
aboutWinston.lifeGoal = "učit JavaScript";
Pokud už nějakou vlastnost nepotřebujeme, můžeme ji odstranit (ale většinu času pravděpodobně jen změníme její hodnotu):
delete aboutWinston.hair;
Pole objektů
Nyní, když znáš oboje, pole i objekty, můžeš je kombinovat a vytvářet tak pole objektů, které jsou skutečně užitečnými způsoby ukládání dat v programech. Zde je například pole s kočkami:
var mojeKočky = [
{jméno: "Lizzie",
věk: 18},
{jméno: "Daemon",
věk: 1}
];
for (var i = 0; i < mojeKočky.length; i++) {
var mojeKočka = mojeKočky[i];
println(mojeKočka.jméno + ' má ' + mojeKočka.věk + ' let.');
}
Všimni si, že provádíme iteraci řady objektů stejným způsobem, jakým provádíme iteraci řady čísel nebo řetězců, za použití cyklu for. V rámci každé iterace přistupujeme k aktuálnímu prvku pole se závorkovým zápisem, a pak přistupujeme k vlastnostem prvku tohoto pole (objektu) s tečkovým zápisem.
Zde je další praktický příklad, který můžeš použít ve svých programech, pole souřadnicových pozic:
var positions = [
{x: 200, y: 100},
{x: 200, y: 200},
{x: 200, y: 300}
];
for (var i = 0; i < positions.length; i++) {
var position = positions[i];
ellipse(position.x, position.y, 100, 100);
}
Celkem pěkné, že? Objekty mohou být zprvu matoucí, ale nadále je používej a nakonec jim propadneš a budeš objekty dělat úplně ze všeho!
Chceš se zapojit do diskuze?
Zatím žádné příspěvky.