Udělala jsem program,
který o Winstonovi prozrazuje
řadu zajímavých detailů.
Ale neprozrazuje úplně vše,
protože si to Winston nepřeje.
Tak to prostě Winston chce.
Pojďme se podívat, jak jsem
tento program vytvořila.
Nejdřív jsem vytvořila proměnné,
které v sobě ukládají části informací.
První proměnná obsahuje
číslo, Winstonův věk.
Druhá proměnná obsahuje
textový řetězec, jeho oči.
A třetí proměnná obsahuje
pole řetězců,
což jsou věci, které
Winston rád dělá.
A poslední dvě proměnné
obsahují řetězce,
které popisují Winstonovo
místo narození.
A tady dolů jsem informace vypsala
pomocí textových příkazů a proměnných.
U pole musím samozřejmě
zpřístupnit každý z jeho prvků.
K tomu používám
zápis v závorce.
Všech pět proměnných popisují
jednu a tu samou věc: Winstona.
Proměnné ale nevědí,
že popisují tu samou věc.
Když chceme v JavaScriptu uložit
hromadu souvisejících informací,
používáme k tomu
mnohem lepší způsob.
A tím způsobem je "objekt".
To znamená, že namísto pěti
proměnných nám stačí jedna,
která všechny naše
informace uloží pohromadě.
Pojďme si to vyzkoušet
na Winstonových informacích.
Nejdříve si vytvoříme proměnnou
a nazveme ji Winston.
Poté vložíme složené závorky.
Dejte si pozor, aby byly
složené a ne hranaté.
A na konec dáme prostředník.
Vytvořili jsme objekt!
Neobsahuje ale žádné informace.
Aby nějaké informace obsahoval,
musíme mu dát nějaké vlastnosti.
A každá vlastnost se skládá
z klíče a hodnoty.
Věk napíšeme následovně:
age: 19.
A oči napíšeme takhle:
eyes: "black"
Winston má teď uvnitř
svého objektu dvě vlastnosti.
Pro koníčky napíšeme "likes: "
a překopírujeme horní část kódu.
Takže Winston už má
tři vlastnosti.
Každá z vlastností má klíč,
který je na levé straně,
a pak hodnotu,
která je na pravé straně.
Pro klíč platí stejná pravidla jako
pro jména proměnných v JavaScriptu.
Žádné mezery, začínáme
písmenem a tak dále.
Co se týče hodnoty,
může se jednat o jakoukoli hodnotu,
na kterou jsme zatím narazili.
Může to být číslo, řetězec, pole...
Mohl by to dokonce být i boolean.
Můžeme napsat "isCool: true",
což je samozřejmě pravda.
Popravdě můžeme jako hodnotu
použít i nějaký jiný objekt.
Například město a stát
narození jsou informace,
které popisují tu samou věc.
Jedno a to samé místo.
Dávalo by proto smysl, abychom
hodnotu uložili jako objekt.
Přidám další klíč,
místo narození.
A jako hodnotu nejdřív
vložím složené závorky.
Uvnitř pak budu mít klíč
pro město, "city: ".
"Mountain View"
A stát, "state: ".
"California".
A teď už můžete do objektu
ukládat celkem detailní informace.
A protože už máme
tento pěkný objekt,
který o Winstonovi
prozrazuje zajímavé informace,
můžeme všechny tyto
zastaralé proměnné smazat.
A dostali jsme chybové hlášení!
Je to kvůli tomu, že naše textové
příkazy odkazují na staré proměnné.
Musíme informace aktualizovat
a použít informace z objektu.
Začneme tím, že zakomentujeme
poslední tři řádky kódu,
abychom je mohli
aktualizovat jeden po druhém.
Momentálně zde máme "winstonAge"
a potřebujeme to něčím nahradit.
Nejprve napíšeme "winston",
což je název proměnné.
Všimněte si, že pokud to necháme tak,
dostaneme hlášení "object Object".
A to není vůbec hezké.
Je to zpráva JavaScriptu,
která nám říká, že se snažíme převést
celý objekt do řetězcové hodnoty.
My se ale snažíme získat
pouze vnitřní hodnotu pro věk.
Takže za to napíšeme tečku,
"winston." a napíšeme název klíče.
Klíčem je "age".
A máme věk!
Toto se nazývá tečkový zápis.
Je to typ zápisu,
kdy nejprve napíšeme název proměnné
objektu, tečku a pak klíč dané vlastnosti.
Podobně můžeme dodělat zbytek.
Tohle odkomentuji.
A namísto "winstonEyes"
napíšeme "winston.eyes".
A tady to bude "winston.likes".
A potom "winston.likes[1]".
A pro tento poslední to bude
o trošku komplikovanější,
protože se jedná o objekt
uvnitř jiného objektu.
Napíšeme "winston.birthplace",
což ale pořád odkazuje
k celému objektu.
A proto musíme napsat
"winston.birthplace.city".
A tady napíšeme
"winston.birthplace.state".
Toto se celkem hodí,
protože se můžete vnořovat
do objektů, které jsou v objektech.
Jak můžete vidět,
objekty jsou skvělým způsobem, jak
uložit související informace pohromadě.
Můžeme je pak později
vyhledat a použít.
A čím více je budete používat,
tím více budete z objektů nadšeni!