0:00:01.056,0:00:04.067 Pojďme se podívat na další věci,[br]které můžeme s objekty dělat. 0:00:04.067,0:00:07.779 Máme zde program, který jsme [br]používali v tutoriálu o funkcích. 0:00:08.339,0:00:11.066 Program obsahuje [br]funkci drawWinston, 0:00:11.066,0:00:14.178 která kreslí Winstona[br]na určitých pozicích x a y. 0:00:14.678,0:00:18.128 A pak zde dolů čtyřikrát[br]voláme drawWinston, 0:00:18.128,0:00:21.043 ale pokaždé s jinými [br]souřadnicemi x a y. 0:00:21.504,0:00:25.911 A jak mě znáte, když se na[br]tyto čtyři řádky kódu podívám, 0:00:25.911,0:00:32.250 hned vidím, jak jsou si podobny[br]a chci namísto toho použít cyklus. 0:00:33.200,0:00:35.802 Uvnitř cyklu by kód[br]stačilo zavolat jenom jednou, 0:00:35.802,0:00:39.171 přičemž by se pokaždé[br]změnily souřadnice x a y. 0:00:39.861,0:00:45.344 Abychom to provedli, musíme najít[br]způsob, jak uložit pozice x a y jako pole. 0:00:45.344,0:00:47.671 Tak uděláme cyklus. 0:00:47.671,0:00:49.902 Máme dvě řady hodnot, 0:00:49.902,0:00:56.030 takže bychom mohli mít dva pole,[br]jedno pro pozici x a druhé pro y. 0:00:56.030,0:01:02.051 Jako pozici x můžeme mít[br]99, 294, 101 a 294. 0:01:02.281,0:01:08.812 Pro pozici y použijeme[br]117, 117, 316, 316. 0:01:09.564,0:01:11.592 A teď můžeme udělat cyklus: 0:01:11.592,0:01:18.662 for (var i = 0; [br]i < xPositions.length; i++) 0:01:18.662,0:01:22.302 Takže projdeme každý prvek[br]pozice x a napíšeme: 0:01:22.302,0:01:30.102 drawWinston(xPositions[i], [br]yPositions[i]); 0:01:32.013,0:01:34.944 Poďme zkusit, jestli to [br]funguje a smažeme toto. 0:01:34.944,0:01:36.442 Funguje to! 0:01:36.442,0:01:40.282 Takže teď stačí přivolat[br]tento jeden řádek kódu, 0:01:40.282,0:01:45.171 který Winstona nakreslí pro[br]každou pozici x pole xPositions. 0:01:45.552,0:01:49.057 Můžeme jich přidat víc,[br]stačí napsat například 10. 0:01:49.057,0:01:57.946 Můžeme napsat 1, pak 1,[br]znovu 1 a potom 100 a 1. 0:01:58.572,0:02:02.076 Teď to vypadá trochu chaoticky. 0:02:02.076,0:02:05.148 A to se mi moc nelíbí,[br]protože se těžko rozeznává, 0:02:05.148,0:02:08.438 které x náleží ke kterému y. 0:02:08.438,0:02:14.959 A já chci, abych se při pohledu[br]na program v párech x-y orientovala. 0:02:14.959,0:02:16.848 Nechce se mi dávat pozor na to, 0:02:16.848,0:02:20.759 abych je nad sebou [br]perfektně srovnala. 0:02:22.529,0:02:26.979 Chtěla bych najít jiný způsob,[br]jak tyto pozice ukládat. 0:02:26.979,0:02:30.759 Mohli bychom je [br]uložit jako objekty. 0:02:31.000,0:02:36.139 Každá pozici jsou vlastně[br]dva kusy informací, x a y. 0:02:36.139,0:02:39.388 Mohli bychom mít objekt,[br]který ma vlastnosti x a y. 0:02:39.388,0:02:42.572 A pak bychom mohli [br]mít pole objektů, 0:02:42.572,0:02:44.958 které by všechny [br]pozice x a y obsahovalo. 0:02:44.958,0:02:45.958 Pojďme to udělat. 0:02:46.258,0:02:49.389 Napíšeme:[br]"var positions" rovná se. 0:02:49.389,0:02:51.129 A uvnitř bude pole. 0:02:51.129,0:02:56.110 Ale každý jeho element bude[br]namísto čísla objektem. 0:02:56.365,0:02:59.229 Zde máme složené závorky 0:02:59.229,0:03:04.710 A pak napíšeme x: 99, y: 117. 0:03:05.559,0:03:08.921 Tím jsme uložili jednu[br]z našich pozic. 0:03:08.921,0:03:13.110 Teď přidáme další. 0:03:14.360,0:03:19.171 Napíšeme x: 294, y: 117. 0:03:19.171,0:03:24.180 Třetí bude x: 101, y: 316. 0:03:25.514,0:03:31.198 A poslední x: 294, y: 316. 0:03:31.671,0:03:34.925 A teď máme pole objektů, 0:03:34.925,0:03:38.080 ve kterém má každý objekt [br]svoje vlastnosti x a y. 0:03:39.240,0:03:42.792 A tady dolů v našem cyklu for[br]změníme toto takovým způsobem, 0:03:42.792,0:03:48.624 že se bude opakovat positions.legth[br]a pak sem dolů předáme objekty. 0:03:48.707,0:03:53.778 Momentálně to předává celý objekt,[br]ale my chceme předat jen x a y. 0:03:53.778,0:03:58.768 Takže napíšeme:[br]"positions[i].x" a "positions[i].y". 0:04:00.692,0:04:04.181 Teď můžeme smazat[br]tyto seskupená pole. 0:04:04.563,0:04:09.585 Náš kód je teď mnohem hezčí[br]a zároveň je mnohem čitelnější. 0:04:09.710,0:04:12.618 A čím více čitelného kódu, tím lépe. 0:04:13.178,0:04:16.330 Mimo jiné je jednoduchší [br]něco do kódu přidávat. 0:04:16.330,0:04:23.540 Mohla bych přidat pár souřadnic[br]s hodnotami x: 200, y: 200. 0:04:23.577,0:04:25.709 A v prostředku se nám [br]objeví Winston! 0:04:27.930,0:04:30.979 Nyní vám ukážu něco,[br]co je ještě o něco lepší. 0:04:31.811,0:04:36.513 Všimněte si, že naše funkce[br]momentálně očekává dva čísla. 0:04:36.513,0:04:39.150 Pak tyto dva čísla používá. 0:04:39.150,0:04:42.290 Můžeme naši funkci změnit tak,[br]že namísto čísel očekává objekt. 0:04:42.290,0:04:45.261 A pak z tohoto objektu[br]získá hodnoty x a y. 0:04:45.261,0:04:49.562 To znamená, že tady dolů [br]by nám stačilo vložit objekt. 0:04:49.611,0:04:51.089 Pojďme to zkusit. 0:04:51.089,0:04:53.661 Máme zde jen objekt[br]a je to pokazený. 0:04:54.071,0:04:57.680 A to proto, že naše funkce[br]pořád očekává dva objekty. 0:04:57.680,0:04:59.846 A dostává pouze jeden. 0:04:59.846,0:05:02.591 Změníme to a řekneme, [br]že dostane facePosition. 0:05:02.591,0:05:05.071 A dostali jsme chybu. 0:05:05.071,0:05:06.802 Říká, že faceX není definováno. 0:05:06.802,0:05:10.468 Protože předtím jsme ho [br]použili jako argument, 0:05:10.468,0:05:13.073 teď ale neexistuje a [br]předáváme pouze objekt. 0:05:13.073,0:05:21.264 Mohli bychom proto uložit [br]pozici x objektu do proměnné faceX. 0:05:21.264,0:05:24.952 Říkáme tím, že máme tento objekt[br]a víme, že má vlastnost x, 0:05:24.952,0:05:28.463 a proto ji uložíme do[br]proměnné faceX. 0:05:28.463,0:05:30.522 A to samé můžeme [br]udělat pro y: 0:05:30.522,0:05:33.762 faceY = facePosition.y 0:05:35.069,0:05:38.517 A zbytek funkce používá[br]faceX a faceY. 0:05:38.517,0:05:40.479 Musíme je ale napsat správně. 0:05:40.479,0:05:42.569 Pokud bychom napsali xx,[br]nebude to fungovat, 0:05:42.569,0:05:46.625 protože to tady dolů v našem[br]poli objektů není. 0:05:46.625,0:05:48.368 Musí se to tedy shodovat. 0:05:49.111,0:05:52.223 Je to celkem užitečné, protože[br]teď můžeme použít pole objektů, 0:05:52.223,0:05:54.422 dokonce i funkce pracující s objekty. 0:05:54.742,0:06:00.780 A jak zjistíte, vaše programy mohou[br]být velmi efektivní s jejich použitím dat. 0:06:00.780,0:06:04.192 Obzvláště párování hodnot x a y[br]je něčím velmi častým. 0:06:04.250,0:06:09.091 Věřím, že se vám hodí při tvorbě[br]všech zdejších animací a kreseb. 0:06:09.091,0:06:10.987 Takže hurá na ta.