0:00:00.847,0:00:03.306 Продовжимо досліджувати те, що ми можемо[br]робити з об'єктами. 0:00:04.109,0:00:08.001 Ми повертаємось до програми яку ми[br]використовували при вивчені функцій. 0:00:08.465,0:00:14.273 Ця програма з функцією drawWinston, знає[br]як намалювати Вінстона в певних "x" і "y". 0:00:14.273,0:00:20.910 Тоді тут ми викликаємо drawWinston 4 рази[br]і кожний має різний набір X та Y координат 0:00:21.900,0:00:28.009 Що ж, ви мене знаєте, коли я поглянула на[br]ці 4 виклики drawWinston, що дуже подібні, 0:00:28.787,0:00:34.104 все про, що я можу думати, це про те, що[br]було б краще використати цикл і викликати 0:00:34.104,0:00:39.194 лише один раз всередині циклу, змінюючи[br]X та Y у кожному повторі циклу. 0:00:39.894,0:00:44.036 Отже, щоб зробити це, нам слід придумати[br]спосіб зберігання цих X та Y позицій 0:00:44.036,0:00:47.036 у масиві, тому ми зможемо запустити цикл[br]через масив. 0:00:47.036,0:00:55.816 У нас 2 набори значень і ми можемо зробити[br]2 масиви. Один для позицій X інший для Y. 0:00:55.816,0:01:08.648 Отже, X координата може мати 99, 294, 101,[br]і 294. І позиції Y - 117, 117, 316, 316. 0:01:08.648,0:01:12.589 Добре, тепер ми можемо запустити цикл з[br]нашим циклом for. 0:01:12.589,0:01:18.399 var i = 0; i < xPositions.length; i++ 0:01:18.399,0:01:22.047 Отже, ми проходимо по кожному елементі у[br]xPositions і введемо 0:01:22.047,0:01:29.727 drawWinston(xPositions[i], yPositions[i]); 0:01:30.897,0:01:33.926 Гаразд, поглямо чи запрацює, якщо видалити 0:01:33.926,0:01:36.200 Так, працює 0:01:36.200,0:01:41.175 І тепер ми можемо викликати ось це, просто[br]цей рядок коду що виконує drawWinston 0:01:41.175,0:01:44.645 але він обраховується в кожній позиції[br]xPositions в масиві. 0:01:44.645,0:01:50.409 Отже, ми можемо додати більше до цього[br]ввівши щось типу... 10, тоді додати 1, 0:01:50.409,0:01:57.889 а потім 1, і тоді 1, і потім ще 100 та 1. 0:01:57.889,0:02:04.709 Зараз, це виглядає трохи не акуратно і це[br]мені не подобається? так як мені важко 0:02:04.709,0:02:13.119 побачити які координати X відносяться до Y[br]Хочу щоб з першого погляду було зрозуміло 0:02:13.119,0:02:14.389 які пари у мене з X. 0:02:14.859,0:02:19.419 Замість цього, щоб переконатися я[br]ідеально вирівняю над одним одним 0:02:19.419,0:02:20.629 можливо так 0:02:20.629,0:02:26.506 Отже, я хочу найти інший спосіб[br]зберігання цих позицій 0:02:27.270,0:02:30.570 Є одна ідея щоб зберігати їх як об'єкти. 0:02:30.631,0:02:36.521 Подумайте про це, кожна позиція це два[br]біти інформації: X та Y. Таким чином, ми 0:02:36.521,0:02:41.544 могли б мати об'єкт, що має властивості Х[br]та Y, а потім мати масив об'єктів 0:02:41.544,0:02:44.044 з усіма позиціями X та Y. 0:02:44.044,0:02:45.758 Отже. зробимо це 0:02:45.758,0:02:51.395 Ми введемо var positions рівне масиву 0:02:51.395,0:02:55.852 Але кожний елемент замість того, [br]щоб бути числом буде об'єктом 0:02:56.312,0:03:04.691 Отже, у нас фігурні дужки і тоді введемо[br]X: 99, Y:117. 0:03:05.551,0:03:13.392 Отже, тепер ми маємо одну з наших позицій[br]тут, а потім ми додамо ще одну тут. 0:03:14.392,0:03:30.897 Гаразд, X повинна бути 294, 117, третя[br]буде 101, 316, а остання з них 294 і 316. 0:03:30.897,0:03:37.524 І тепер у нас є масив об'єктів, де кожен[br]об'єкт має значення Х та Y всередині. 0:03:37.524,0:03:44.228 Отже тут, в нашому циклі for змінимо цю[br]функцію, щоб повторювати positions.length 0:03:44.228,0:03:48.993 Тоді ми пропустимо об'єкт. 0:03:48.993,0:03:54.211 Гаразд, зараз він пропускає цілий об'єкт,[br]але ми хочемо щоб він проходив по X та Y 0:03:54.211,0:03:58.851 отже, нам потрібно positions[i].X та[br]positions[i].Y. 0:03:59.341,0:04:00.228 Тада! 0:04:00.228,0:04:03.969 Зараз можемо позбутись цих старих[br]нагромаджених масивів 0:04:05.029,0:04:09.687 Чудово, і це виглядає набагато приємніше[br]для мене і код більш читабельний, 0:04:09.687,0:04:12.687 і завжди чим більш читабельний код[br]тим краще 0:04:12.687,0:04:20.335 Також це спрощує доповнення, якщо хочемо[br]додати щось. Я додам ще 2 і тоді введемо 0:04:20.335,0:04:24.805 X 200 Y 200, отримаємо маленького Вінстона[br]по середині, тут. 0:04:26.805,0:04:27.661 Чудово. 0:04:27.691,0:04:31.266 Тепер я хочу показати вам дещо навіть[br]веселіше, ніж це. 0:04:31.266,0:04:38.635 Зверніть увагу на те як наша функція[br]приймає 2 числа, а потім використовує їх 0:04:38.635,0:04:42.877 І ми можемо змінити нашу функцію, то вона[br]прийматиме об'єкт і набуватиме 0:04:42.877,0:04:44.657 значень X та Y об'єкту. 0:04:44.657,0:04:49.230 Це означає, що тут ми могли б[br]просто передати об'єкт. 0:04:49.230,0:04:50.846 Спробуємо це. 0:04:50.846,0:04:53.596 Ми пропускаємо об'єкт, тепер він зламаний. 0:04:53.596,0:05:00.178 Так як наша функція очікує 2 об'єкти, а[br]отримує тільки 1, і тому, ми змінимо її 0:05:00.178,0:05:04.433 щоб ввести, що це набуває facePosition, і[br]тепер ми отримуємо помилку, що faceX 0:05:04.433,0:05:07.433 не визначена, тому що раніше 0:05:07.433,0:05:12.901 ми проходили по faceX як аргументу, але[br]тепер він не існує, ми отримуємо об'єкт. 0:05:12.901,0:05:20.899 І те що можемо зробити це зберегти позицію[br]X від об'єкта всередині змінної faceX. 0:05:20.899,0:05:24.684 Отже, ми говоримо, що отримали цей об'єкт,[br]ми знаємо, цей об'єкт має властивість X, 0:05:24.684,0:05:27.684 так що ми просто зберігатимемо,[br]в змінній faceX. 0:05:27.684,0:05:33.637 Ми можемо так само вчинити з[br]Y, отже, faceY = facePosition.y. 0:05:33.637,0:05:34.850 Тада! 0:05:34.850,0:05:38.167 І тоді, решта частина функції[br]використовує faceX та faceY. 0:05:38.167,0:05:40.968 Тепер, нам слід переконатися, чи правильно[br]написали їх, тому, що якби ми ввели хх, це 0:05:40.968,0:05:43.968 не працюватиме, так як це не те, що тут 0:05:43.968,0:05:48.125 в нашому масиві об'єктів, тому потрібно[br]щоб відповідали один одному. 0:05:48.125,0:05:53.651 Це дуже акуратно, і тепер ви можете мати [br]масиви об'єктів, функції, які є об'єктах 0:05:53.651,0:05:58.730 і ви дійсно виявите, що ваші програми[br]можуть бути дуже потужним з тим, як 0:05:58.730,0:06:00.160 вони структурують свої дані 0:06:00.160,0:06:05.184 тим більше якщо так часто хотіти групувати[br]X і Y разом, я думаю, ви знайдете їх 0:06:05.184,0:06:08.926 особливо корисними у всіх ваших [br]зображувальних та анімаційних програм тут. 0:06:08.926,0:06:12.000 Таким чином, продовжуйте[br]і отримуйте задоволення!