-
Pojďme se podívat na další věci,
které můžeme s objekty dělat.
-
Máme zde program, který jsme
používali v tutoriálu o funkcích.
-
Program obsahuje
funkci drawWinston,
-
která kreslí Winstona
na určitých pozicích x a y.
-
A pak zde dolů čtyřikrát
voláme drawWinston,
-
ale pokaždé s jinými
souřadnicemi x a y.
-
A jak mě znáte, když se na
tyto čtyři řádky kódu podívám,
-
hned vidím, jak jsou si podobny
a chci namísto toho použít cyklus.
-
Uvnitř cyklu by kód
stačilo zavolat jenom jednou,
-
přičemž by se pokaždé
změnily souřadnice x a y.
-
Abychom to provedli, musíme najít
způsob, jak uložit pozice x a y jako pole.
-
Tak uděláme cyklus.
-
Máme dvě řady hodnot,
-
takže bychom mohli mít dva pole,
jedno pro pozici x a druhé pro y.
-
Jako pozici x můžeme mít
99, 294, 101 a 294.
-
Pro pozici y použijeme
117, 117, 316, 316.
-
A teď můžeme udělat cyklus:
-
for (var i = 0;
i < xPositions.length; i++)
-
Takže projdeme každý prvek
pozice x a napíšeme:
-
drawWinston(xPositions[i],
yPositions[i]);
-
Poďme zkusit, jestli to
funguje a smažeme toto.
-
Funguje to!
-
Takže teď stačí přivolat
tento jeden řádek kódu,
-
který Winstona nakreslí pro
každou pozici x pole xPositions.
-
Můžeme jich přidat víc,
stačí napsat například 10.
-
Můžeme napsat 1, pak 1,
znovu 1 a potom 100 a 1.
-
Teď to vypadá trochu chaoticky.
-
A to se mi moc nelíbí,
protože se těžko rozeznává,
-
které x náleží ke kterému y.
-
A já chci, abych se při pohledu
na program v párech x-y orientovala.
-
Nechce se mi dávat pozor na to,
-
abych je nad sebou
perfektně srovnala.
-
Chtěla bych najít jiný způsob,
jak tyto pozice ukládat.
-
Mohli bychom je
uložit jako objekty.
-
Každá pozici jsou vlastně
dva kusy informací, x a y.
-
Mohli bychom mít objekt,
který ma vlastnosti x a y.
-
A pak bychom mohli
mít pole objektů,
-
které by všechny
pozice x a y obsahovalo.
-
Pojďme to udělat.
-
Napíšeme:
"var positions" rovná se.
-
A uvnitř bude pole.
-
Ale každý jeho element bude
namísto čísla objektem.
-
Zde máme složené závorky
-
A pak napíšeme x: 99, y: 117.
-
Tím jsme uložili jednu
z našich pozic.
-
Teď přidáme další.
-
Napíšeme x: 294, y: 117.
-
Třetí bude x: 101, y: 316.
-
A poslední x: 294, y: 316.
-
A teď máme pole objektů,
-
ve kterém má každý objekt
svoje vlastnosti x a y.
-
A tady dolů v našem cyklu for
změníme toto takovým způsobem,
-
že se bude opakovat positions.legth
a pak sem dolů předáme objekty.
-
Momentálně to předává celý objekt,
ale my chceme předat jen x a y.
-
Takže napíšeme:
"positions[i].x" a "positions[i].y".
-
Teď můžeme smazat
tyto seskupená pole.
-
Náš kód je teď mnohem hezčí
a zároveň je mnohem čitelnější.
-
A čím více čitelného kódu, tím lépe.
-
Mimo jiné je jednoduchší
něco do kódu přidávat.
-
Mohla bych přidat pár souřadnic
s hodnotami x: 200, y: 200.
-
A v prostředku se nám
objeví Winston!
-
Nyní vám ukážu něco,
co je ještě o něco lepší.
-
Všimněte si, že naše funkce
momentálně očekává dva čísla.
-
Pak tyto dva čísla používá.
-
Můžeme naši funkci změnit tak,
že namísto čísel očekává objekt.
-
A pak z tohoto objektu
získá hodnoty x a y.
-
To znamená, že tady dolů
by nám stačilo vložit objekt.
-
Pojďme to zkusit.
-
Máme zde jen objekt
a je to pokazený.
-
A to proto, že naše funkce
pořád očekává dva objekty.
-
A dostává pouze jeden.
-
Změníme to a řekneme,
že dostane facePosition.
-
A dostali jsme chybu.
-
Říká, že faceX není definováno.
-
Protože předtím jsme ho
použili jako argument,
-
teď ale neexistuje a
předáváme pouze objekt.
-
Mohli bychom proto uložit
pozici x objektu do proměnné faceX.
-
Říkáme tím, že máme tento objekt
a víme, že má vlastnost x,
-
a proto ji uložíme do
proměnné faceX.
-
A to samé můžeme
udělat pro y:
-
faceY = facePosition.y
-
A zbytek funkce používá
faceX a faceY.
-
Musíme je ale napsat správně.
-
Pokud bychom napsali xx,
nebude to fungovat,
-
protože to tady dolů v našem
poli objektů není.
-
Musí se to tedy shodovat.
-
Je to celkem užitečné, protože
teď můžeme použít pole objektů,
-
dokonce i funkce pracující s objekty.
-
A jak zjistíte, vaše programy mohou
být velmi efektivní s jejich použitím dat.
-
Obzvláště párování hodnot x a y
je něčím velmi častým.
-
Věřím, že se vám hodí při tvorbě
všech zdejších animací a kreseb.
-
Takže hurá na ta.