[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.25,0:00:04.21,Default,,0000,0000,0000,,В попередньому обговоренні, ми дізналися,\Nпро те як зробити тип об'єкта для подання Dialogue: 0,0:00:04.21,0:00:06.23,Default,,0000,0000,0000,,наших двох Вінстонів як об'єктів Dialogue: 0,0:00:06.23,0:00:09.23,Default,,0000,0000,0000,,а потім встановили їх з конструкторами. Dialogue: 0,0:00:09.23,0:00:13.47,Default,,0000,0000,0000,,Тепер, тип об'єкта не тільки повинен бути\Nпов'язаним з властивостями Dialogue: 0,0:00:13.47,0:00:17.47,Default,,0000,0000,0000,,Це також може пов'язуватись з \Nфункціональністю. Подумайте про світ і всі Dialogue: 0,0:00:17.47,0:00:18.81,Default,,0000,0000,0000,,типи об'єктів в ньому Dialogue: 0,0:00:18.81,0:00:24.01,Default,,0000,0000,0000,,як про нас, людей. У всіх нас є рісті вік,\Nале є те, що ми можемо робити, це спати, Dialogue: 0,0:00:24.01,0:00:26.29,Default,,0000,0000,0000,,смачно поїсти, і програмувати. Dialogue: 0,0:00:26.29,0:00:30.94,Default,,0000,0000,0000,,І ми хочемо бути в змозі зв'язати ці \Nфункції з тими типами об'єктів. Dialogue: 0,0:00:30.94,0:00:35.95,Default,,0000,0000,0000,,У цій програмі, де ми зупинилися минулого\Nразу, ми маємо функцію тут, Dialogue: 0,0:00:35.95,0:00:41.25,Default,,0000,0000,0000,,drawWinston, що ми викликаємо по обох \Nоб'єктах Вінстон. Чи Не було б здорово, Dialogue: 0,0:00:41.25,0:00:43.07,Default,,0000,0000,0000,,якщо б ми могли просто прикріпити це Dialogue: 0,0:00:43.07,0:00:48.57,Default,,0000,0000,0000,,до типу об'єкта Вінстон. Ну ми можемо, і\Nце легко зробити. Dialogue: 0,0:00:48.57,0:00:55.72,Default,,0000,0000,0000,,Тому, під нашим конструктором, ми введемо\NWinston.prototype велика W Dialogue: 0,0:00:55.72,0:00:59.23,Default,,0000,0000,0000,,і prototype, це нове слово, яке ви, \Nймовірно, не бачили Dialogue: 0,0:00:59.23,0:01:05.88,Default,,0000,0000,0000,,І прототип це властивість об'єкта, \Nдо якого ми можемо приєднати функції Dialogue: 0,0:01:05.88,0:01:13.31,Default,,0000,0000,0000,,і це буде означати, що кожен об'єкт, який\Nє екземпляром, матиме ці функції. Dialogue: 0,0:01:13.31,0:01:19.61,Default,,0000,0000,0000,,Отже, ми можемо ввести ".prototype.", а \Nпотім ім'я функції, тому ми вводимо "draw" Dialogue: 0,0:01:19.61,0:01:25.61,Default,,0000,0000,0000,,рівне, і тоді ми можемо взяти наш \NdrawWinston код і ми можемо покласти його Dialogue: 0,0:01:25.61,0:01:32.95,Default,,0000,0000,0000,,перемістити його всередину сюди. Добре так\Nщо тепер, що ми додали функцію draw Dialogue: 0,0:01:32.95,0:01:37.01,Default,,0000,0000,0000,,до нашого Winston prototype. А це значить,\Nми повинні бути в змозі викликати draw() Dialogue: 0,0:01:37.01,0:01:40.01,Default,,0000,0000,0000,,будь-якого типу об'єкта Вінстон Dialogue: 0,0:01:40.01,0:01:42.41,Default,,0000,0000,0000,,Гаразд, отже, ми повинні бути в змозі\Nвикликати draw () по Dialogue: 0,0:01:42.41,0:01:45.41,Default,,0000,0000,0000,,winstonTeen або winstonAdult. Dialogue: 0,0:01:45.41,0:01:49.57,Default,,0000,0000,0000,,І коли у нас є функція, як ця, то\Nми можемо викликате по об'єкті, Dialogue: 0,0:01:49.57,0:01:53.28,Default,,0000,0000,0000,,ми фактично називаємо це "метод" так що ви\Nможете чути як я кажу "метод"зараз. Dialogue: 0,0:01:54.15,0:01:58.01,Default,,0000,0000,0000,,Гаразд, скажемо це " метод відображення"\NГаразд. Dialogue: 0,0:01:58.01,0:02:03.36,Default,,0000,0000,0000,,Отже, тепер ми видалимо це, і ось це і \Nтепер побачимо чи ми можемо викликати Dialogue: 0,0:02:03.36,0:02:07.07,Default,,0000,0000,0000,,draw() winstonTeen.draw() Dialogue: 0,0:02:07.07,0:02:13.70,Default,,0000,0000,0000,,Гаразд. У нас помилка, що стирчить тут, і \Nвона говорить: "winstObject не визначений" Dialogue: 0,0:02:13.70,0:02:20.53,Default,,0000,0000,0000,,І перш ніж, ми пропустимо цей аргумент \Nв drawWinston, що був об'єктом Вінстон Dialogue: 0,0:02:20.53,0:02:26.46,Default,,0000,0000,0000,,але тепер ми не пропускаємо його отже, ми\Nмогли б змінити це, щоб пропускати. Dialogue: 0,0:02:26.46,0:02:30.82,Default,,0000,0000,0000,,а тоді, ми подивимося, чи проходимите тут?\NМи слід би пропустити winstonTeen. Гаразд. Dialogue: 0,0:02:30.82,0:02:36.55,Default,,0000,0000,0000,,Спрацювало, але це, здається, теж не дуже \Nрозумно. Я і так вже викликаю draw на Dialogue: 0,0:02:36.55,0:02:38.44,Default,,0000,0000,0000,,самому об'єкті. Dialogue: 0,0:02:38.44,0:02:43.96,Default,,0000,0000,0000,,Це не повинно пройти в об'єкті також. \NЦе здається зайвим. Dialogue: 0,0:02:43.96,0:02:48.46,Default,,0000,0000,0000,,І це правда, ми не повинні робити це, так\Nщо видалимо це тут, а тепер подумаємо. Dialogue: 0,0:02:48.46,0:02:54.40,Default,,0000,0000,0000,,Якщо ми всередині об'єкту, що використати\Nщоб мати доступ до властивостей об'єкту? Dialogue: 0,0:02:54.40,0:03:00.37,Default,,0000,0000,0000,,ви можете поглянути на наш конструктор і\Nпам'ятаєте спеціальне ключове слово "this" Dialogue: 0,0:03:00.37,0:03:08.57,Default,,0000,0000,0000,,"А, якщо ми просто змінимо це, на ось це!\NОтже, ми міняємо winstObject на "this". Dialogue: 0,0:03:08.57,0:03:12.65,Default,,0000,0000,0000,,Так як ми знаходимося всередині об'єкту\Nпрямо зараз. Ця функція обраховується Dialogue: 0,0:03:12.65,0:03:16.44,Default,,0000,0000,0000,,відповідно об'єкту, отже, "this" \Nвідноситиметься до цього поточного об'єкту Dialogue: 0,0:03:16.44,0:03:20.27,Default,,0000,0000,0000,,І так, спосіб, яким ми можемо просто\Nсказати: "this", і ми отримаємо доступ до Dialogue: 0,0:03:20.27,0:03:23.27,Default,,0000,0000,0000,,всіх властивостей цього поточного об'єкту Dialogue: 0,0:03:23.27,0:03:31.18,Default,,0000,0000,0000,,І це повністю працює, бачите? Чи не круто?\NІ тепер можемо ввести WinstonAdult.draw() Dialogue: 0,0:03:31.91,0:03:38.27,Default,,0000,0000,0000,,І це матиме доступ до властивостей winston\NAdult так як це об'єкт, що виклкається. Dialogue: 0,0:03:38.27,0:03:43.80,Default,,0000,0000,0000,,Ось це дійсно здорово про "This" ключове \Nслово, хоча це іноді заплутує коли говориш Dialogue: 0,0:03:45.75,0:03:52.03,Default,,0000,0000,0000,,Добре, що ж було весело, тому додамо ще \Nодин метод. І що ще може робити Вінстон? Dialogue: 0,0:03:52.03,0:03:57.51,Default,,0000,0000,0000,,Можливо він розкаже. Тому, зробимо Winston\N.prototype.talk тому, ми можемо додати Dialogue: 0,0:03:57.51,0:04:01.08,Default,,0000,0000,0000,,стільки методів скільки хочем до прототипу\N Dialogue: 0,0:04:01.08,0:04:05.24,Default,,0000,0000,0000,,Так що ми скажемо: "Я Вінстон!" Dialogue: 0,0:04:05.24,0:04:13.18,Default,,0000,0000,0000,,І тоді ми просто введемо this.x+20,і\Nthis.y+150. Dialogue: 0,0:04:13.18,0:04:16.73,Default,,0000,0000,0000,,А в результаті, нічого не сталося, але, \Nзвичайно, це тому, що я ще не Dialogue: 0,0:04:16.73,0:04:19.73,Default,,0000,0000,0000,,викликаю цю функцію. Dialogue: 0,0:04:19.73,0:04:23.55,Default,,0000,0000,0000,,Отже, зробимо щоб підліток говорив \NwinstonTeen.talk() [нерозбірливо] говорить Dialogue: 0,0:04:23.55,0:04:25.07,Default,,0000,0000,0000,,весь час, гаразд. Dialogue: 0,0:04:25.07,0:04:30.48,Default,,0000,0000,0000,,Я Вінстон. А потім winstonAdult.talk () Dialogue: 0,0:04:30.48,0:04:36.83,Default,,0000,0000,0000,,Добре, тепер маємо цей тип об'єкту Вінстон\Nщо має властивості: прізвисько, Dialogue: 0,0:04:36.83,0:04:42.03,Default,,0000,0000,0000,,вік, х, у; і він має функціональності: \Nспособи, методи; які діють по-різному Dialogue: 0,0:04:42.03,0:04:45.03,Default,,0000,0000,0000,,в залежності від властивостей Dialogue: 0,0:04:45.03,0:04:47.100,Default,,0000,0000,0000,,і ми можемо створити стільки екземплярів \NВінстона, скільки ми хочемо, і викликати Dialogue: 0,0:04:47.100,0:04:50.39,Default,,0000,0000,0000,,за одним з цих методів на ньому. Dialogue: 0,0:04:50.76,0:04:52.83,Default,,0000,0000,0000,,Досить круто, так?