Успадковування об'єктами (відео версія)
-
0:01 - 0:03Ми повертаємось до нашої програми, що
створює Вінстонів -
0:03 - 0:08але я додала новий тип об'єкту Хоппер, так
як він почував себе трішки -
0:08 - 0:12покинутим, зараз я визначаю Хоппера таким
самим способом як і Вінстона, ви знаєте -
0:12 - 0:16починаючи з конструктивної функції і
присвоюючи такі ж властивості і тоді малюю -
0:16 - 0:20а потім draw функцію. А після цього,
я додала інший метод, що називається -
0:20 - 0:24Ура![Hooray] так як Хоппер дійсно святкує
а Вінстон насправді -
0:24 - 0:28не зовсім. Зараз, вкінці функції ми
створили -
0:28 - 0:31два нових об'єкти Хоппер: Маленький Хоппер
та Великий Хоппер -
0:31 - 0:35і намалювати їх, і ввели, що один говорить
Ура іншому -
0:36 - 0:38Так що це дуже акуратно
-
0:38 - 0:40Зараз, якщо поглянемо на цей код ось тут
-
0:40 - 0:43ви можете помітити дещо цікаве. Те, що
-
0:43 - 0:49код для Хоппера дуже подібний на код для
Вінстона. Частково виглядає як конструктор -
0:49 - 0:53Я не знаю, чи ви пам'ятаєте, але цей код в
загальному точно такий же як для -
0:53 - 0:55функції конструктора Вінстона
-
0:55 - 1:01І ця функція talk[говорити] має точно
такий код, як наша функція talk Вінстона -
1:01 - 1:04і вони також обидва мають функції
draw[малювання] -
1:04 - 1:07Отже, у них є багато спільних речей у цих
двох видах об'єктів -
1:07 - 1:11і це тому, що, ну знаєте, Хоппер і Вінстон
дуже подібіні об'єкти -
1:11 - 1:17у нашому світі. І якщо ви задумаєтесь про
реальний світ за межами комп'ютера -
1:17 - 1:21більшість об'єктів поділяють деякі
загальні риси з іншими об'єктами. -
1:21 - 1:24Як в тваринному світі. Всі тварини
-
1:24 - 1:28подібні в деяких моментах. І потім у нас
тип, що відрізняться від тварин, -
1:28 - 1:32як люди. І люди поділяють ці спільні риси
-
1:32 - 1:34але також мають свої власні, неповторні
риси. -
1:34 - 1:35Отже, ми можемо сказати, що
-
1:35 - 1:42тварина це тип об'єкта, від якого людський
тип успадковує функціональність. -
1:42 - 1:45Ми не почнемо повністю з нуля ми додамо
зверху функціональність, що ми -
1:45 - 1:49отримуємо будучи твариною. Наприклад всі
тварини видають звуки -
1:49 - 1:51а люди розмовляють мовою.
-
1:51 - 1:55Таким чином, це поняття
успадкування об'єкта -
1:55 - 1:57є також корисним і в програмуванні також.
-
1:57 - 2:00І ми можемо створити ланцюг успадковування
об'єктів в нашому Javascript. -
2:00 - 2:03Отже. щоб зробити це, коли ви думаєте
-
2:03 - 2:04про спільні риси наших об'єктів.
-
2:04 - 2:07І слід придумати ім'я для цього
-
2:07 - 2:09так як ми створюємо новий тип об'єкта,
-
2:09 - 2:11що представляє основний об'єкт
-
2:11 - 2:12тому, назвемо їх істотами
-
2:12 - 2:14Вони обоє істоти.
-
2:14 - 2:18Отже, введемо var creature =. а зараз нам
потрібна функція конструктора -
2:18 - 2:22Тому, давайте поцупимо те, що є у Хоппера
і теж саме у Вінстона. -
2:22 - 2:24Гаразд
-
2:24 - 2:27І тоді... подивимось
-
2:27 - 2:28Зараз нам потрібно..
-
2:28 - 2:30Що ми хочемо робити далі?
-
2:30 - 2:32Можливо ми хочемо додати функцію "talk" до
нього -
2:32 - 2:37Отже, для функії "talk", ми скопіюємо її з
Хоппера. Але звісно нам потрібно мати її -
2:37 - 2:38в об'єкті істоти.
-
2:40 - 2:41Гаразд, класно.
-
2:41 - 2:45Отже, зараз у нас є тип об'єкту істота.
-
2:46 - 2:49але нам потрібно насправді ввести
Хопперу, що йому насправді слід -
2:49 - 2:52базувати свою функціональність, по
істоті. -
2:52 - 2:59Тому, ми можемо зробити це, пишучи рядок
тут. Введемо Hopper.prototype -
2:59 - 3:04= object.create(creature.prototype
-
3:05 - 3:10Те, що ця лінія робить, це говорить
Javascript основувати прототип Хоппера, -
3:10 - 3:14тому, основа всієї функціональності
Хоппера відокремлена від прототипу істоти. -
3:14 - 3:21І тоді це означає, що кожен раз, коли вона
шукає функції в Хоппера це буде в -
3:21 - 3:22прототипі Хоппера
-
3:22 - 3:26спочатку, але потім, якщо не знайде це,
вона пошукає, в прототипі істоти -
3:26 - 3:29І це те, що назвиваємо ланцюжком
прототипів -
3:29 - 3:34Тепер, коли ми зробили це, ми наспрадві
змогли б видалити функцію talk -
3:34 - 3:36В Хоппера
-
3:36 - 3:38Так як вона вже існує в істоти.
-
3:38 - 3:40Що є ланцюжком прототипів.
-
3:40 - 3:42Готові?
-
3:42 - 3:44Це працює!
-
3:44 - 3:47І це працює так як воно находить це в
прототипі істоти. -
3:49 - 3:51Що ж, пробуємо видалити Вінстона також.
-
3:54 - 3:58Гаразд. Це не спрацювало, вона говорить,
об'єкт не має ніякого методу говорити. -
3:58 - 4:01І саме це так? Ну у нас є наш
конструктор Вінстона -
4:01 - 4:04і функція draw і ми забрали функцію talk.
-
4:04 - 4:07Ну, ви помітили, що ми забули ввести
насправді, щоб прототип Вінстон, базувався -
4:07 - 4:09на прототипі істота.
-
4:09 - 4:11Отже. нам потрібно саме цей дуже важливий
рядок. -
4:11 - 4:13Winston.prototype=object.create
-
4:13 - 4:15creature.portotype.
-
4:18 - 4:19Тада!
-
4:19 - 4:20І зверніть увагу на дещо важливе.
-
4:20 - 4:26У мене цей рядок після функції конструктор
але перед тим, ніж я що-небудь додам до -
4:26 - 4:27прототипу Вінстона.
-
4:27 - 4:29Так що, це зазвичай, те, що ви хочете
зробити. -
4:29 - 4:30Ви хочете сказати це так само
-
4:30 - 4:34як ви негайно починаєте, це те,
на чому ваш початковий прототип буде -
4:34 - 4:37заснований. І тоді ми продовжимо додавати
більше матеріалу до цього прототипу -
4:37 - 4:42Тому що може бути щось унікальними у
Вінстона або неповторним в Хоппера -
4:42 - 4:43чого немає в істот.
-
4:43 - 4:45І це однозначно класно, що ви можете
визначити це. -
4:46 - 4:50Гаразд. Зараз, якщо поглянемо на це, у нас
все ще є трохи коду, що повторюється -
4:50 - 4:52Код конструктора.
-
4:52 - 4:53Чи не так? У нас він всі три рази.
-
4:53 - 4:57Чи ми зможемо його видалити?
-
4:58 - 4:59Спробуємо.
-
5:00 - 5:04Добре...щось не виглядає так, що це працює
-
5:04 - 5:07Тому що наш Хоппер з'явився у верхньому
лівому кутку, ніби він забув все про себе. -
5:07 - 5:12І це тому, що Javascript не припускав, що
ви хочете, один і той же конструктор, -
5:12 - 5:15навіть якщо ви хочете, мати прототип
на його основі. -
5:15 - 5:19Ви знаєте, це дозволяє вам визначити свій
власний конструктор для цих об'єктів. -
5:19 - 5:26Але це також дає вам справді простий
спосіб викликати конструктор з об'єкта -
5:26 - 5:35І спосіб, яким ми зробимо це, ми напишемо
creature.callthis,nickname,age,x,y -
5:35 - 5:41Тепер, що це робить (Зверніть увагу, це
спрацювало.) І те що це зробило, це -
5:41 - 5:44насправді викликає функції істоти,
та функції конструктора. -
5:44 - 5:49Це викликає цю функцію, але вона проходить
і говорить добре, ви повинні викликати -
5:49 - 5:54цю функцію конструктора, так як якщо б це
викликалось з об'єкта Хоппер. -
5:54 - 5:57і, ніби вона викликається з
цими аргументами. -
5:57 - 5:59Ці аргументи з яким Хоппер викликається.
-
5:59 - 6:04І це завершить тільки виконання цього коду
так якщо б він був тут. -
6:04 - 6:06Це саме те, що ми хочемо. І це спрацювало.
-
6:06 - 6:09І ми можемо рухатись далі і
-
6:09 - 6:13скопіювати цей рядок до конструктора
Вінстона також. -
6:15 - 6:17І це працює. Ура!
-
6:17 - 6:21Гаразд. Так що перевіримо це. Ми коротко
виклали всі наші загальні властивості -
6:21 - 6:25і функціональні можливості в цьому
одному типі базового об'єкта, істота -
6:25 - 6:28І ми зробили два об'єкти, які поширюються
від цього основного об'єкта. -
6:28 - 6:31Вони успадкували деякі функціональні
можливості але і додали свої власні. -
6:32 - 6:36І здорово, те що ми можемо змінити
загальну функціональність в одному місці. -
6:36 - 6:40Наприклад якби ми хотіли змінити вік знову
ми могли б ввести плюс років [+ yrs old] -
6:41 - 6:43Тепер у кожного є "роки" в кінці.
-
6:44 - 6:51Або ми могли б змінити функції "talk" і
буде як "Вау". А тепер обидва Вінстони та -
6:51 - 6:52Хоппери кажуть "Суп"
-
6:53 - 6:57Так що тепер, ви побачили, як створювати
типи об'єктів і успадковування від них -
6:57 - 6:59ви можете почати думати про те, як це
могло б бути корисним у ваших -
6:59 - 7:01малюках, анімацій, моделюванні та іграх.
-
7:01 - 7:05Наприклад, може бути, у вас є гра, і у вас
є багато типів героїв в ньому -
7:05 - 7:08і всі вони можуть бігти, але тільки деякі
з них можуть стрибати. -
7:08 - 7:12Це ідеальне місце, від деяких типів
об'єктів і деякого успадковування. -
7:12 - 7:15Але я впевнена, ви можете придумати безліч
більше способів також.
- Title:
- Успадковування об'єктами (відео версія)
- Description:
-
Це просто показ екрану нашої інтерактивної бесіди щодо кодування, готової щоб полегшити створення перекладу і субтитрів. Краще дивитися наші бесіди тут:
https://www.khanacademy.org/cs/programming/ - Video Language:
- English
- Duration:
- 07:17
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) | ||
Іван Соломаха edited Ukrainian subtitles for Object Inheritance (Video Version) |