If you're seeing this message, it means we're having trouble loading external resources on our website.

Pokud používáš webový filtr, ujisti se, že domény: *.kastatic.org and *.kasandbox.org jsou vyloučeny z filtrování.

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.
Umíš anglicky? Kliknutím zobrazíš diskuzi anglické verze Khan Academy.