[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.95,0:00:04.23,Default,,0000,0000,0000,,Тепер, коли ви розумієте основи \NJavascript, я хочу навчити вас класному Dialogue: 0,0:00:04.23,0:00:05.96,Default,,0000,0000,0000,,способу використання Javascript Dialogue: 0,0:00:05.96,0:00:09.55,Default,,0000,0000,0000,,Щось, що ми називаємо \N"об'єктно-орієнтоване програмування" Dialogue: 0,0:00:09.55,0:00:12.57,Default,,0000,0000,0000,,Але спочатку ми повинні зрозуміти, чому\Nце насправді пригодиться Dialogue: 0,0:00:12.57,0:00:17.67,Default,,0000,0000,0000,,Тому, я склала програму, що є кращою коли\Nробитимемо її більш об'єктно-орієнтованою Dialogue: 0,0:00:17.67,0:00:21.44,Default,,0000,0000,0000,,Тепер, це досить класна програма, щоб \Nрозпочати. Вгорі у мене є дві змінні, що Dialogue: 0,0:00:21.44,0:00:24.90,Default,,0000,0000,0000,,зберігають прості літерали об'єктів \Nвсередині. Dialogue: 0,0:00:24.90,0:00:27.94,Default,,0000,0000,0000,,Тепер об'єкт літерал є свого роду об'єкт,\Nпро який ми дізналися раніше, що ми Dialogue: 0,0:00:27.94,0:00:30.45,Default,,0000,0000,0000,,створюємо з двома фігурними дужками Dialogue: 0,0:00:30.45,0:00:34.41,Default,,0000,0000,0000,,а потім ми поміщаємо всі ці імена і \Nзначення властивостей, всередину. Dialogue: 0,0:00:34.41,0:00:37.58,Default,,0000,0000,0000,,Отже, у нас є два з цих об'єктів з літерал\Nзначенням, а тоді знизу тут маємо Dialogue: 0,0:00:37.58,0:00:40.58,Default,,0000,0000,0000,,цю функцію drawWinston, що очікує \Nодин аргумент, Dialogue: 0,0:00:40.88,0:00:46.70,Default,,0000,0000,0000,,а потім він відтворює аргумент, малює \Nкартинку, на основі х та у властивостей Dialogue: 0,0:00:46.70,0:00:53.11,Default,,0000,0000,0000,,об'єкту, а потім підпис на основі його\Nпсевдонімів і вікових властивостей. Dialogue: 0,0:00:53.11,0:00:58.16,Default,,0000,0000,0000,,І тепер, нарешті, знизу, ми викликаємо\NdrawWinston() onTeen та onAdult, Dialogue: 0,0:00:58.16,0:01:01.01,Default,,0000,0000,0000,,І це те, що це робить. Показує його Dialogue: 0,0:01:01.01,0:01:06.37,Default,,0000,0000,0000,,Дуже здорово. Тепер, якщо ми йдемо сюди,\Nі ми подивимося на ці об'єкти літералів, Dialogue: 0,0:01:06.37,0:01:11.41,Default,,0000,0000,0000,,зверніть увагу на те, що вони дуже похожі. Dialogue: 0,0:01:11.41,0:01:14.84,Default,,0000,0000,0000,,Обидва мають однакові набори властивостей,\Nі обидва з них можуть бути використані і Dialogue: 0,0:01:14.84,0:01:17.84,Default,,0000,0000,0000,,тією ж функцією drawWinston (). Dialogue: 0,0:01:17.84,0:01:24.07,Default,,0000,0000,0000,,Насправді, знаєте, якщо ви про це думаєте,\Nвони дійсно описують тип Вінстон, так? Dialogue: 0,0:01:24.07,0:01:28.80,Default,,0000,0000,0000,,І ми можемо думати, це може бути, свого\Nроду абстрактний тип Вінстона в світі, Dialogue: 0,0:01:28.80,0:01:36.46,Default,,0000,0000,0000,,і кожен Вінстон має той же набір\Nвластивостей, як псевдонім і вік, х та у Dialogue: 0,0:01:36.46,0:01:42.09,Default,,0000,0000,0000,,і тут, те що ми зробили, це ми тільки що \Nстворили 2 примірника Вінстона Dialogue: 0,0:01:42.09,0:01:48.46,Default,,0000,0000,0000,,щоб описати, певного Winston. Так що це\Nпідліток Вінстон, а це дорослий Вінстон. Dialogue: 0,0:01:48.46,0:01:54.04,Default,,0000,0000,0000,,Але вони насправді, вони дійсно дуже схожі\Nяк є багато речей, які подібні про них. Dialogue: 0,0:01:54.04,0:01:59.87,Default,,0000,0000,0000,,Якщо подумати, багато у світ працює так, і\Nте, що у нас ці абстрактних типи даних, Dialogue: 0,0:01:59.87,0:02:01.30,Default,,0000,0000,0000,,люди, народ Dialogue: 0,0:02:01.30,0:02:04.93,Default,,0000,0000,0000,,і тоді ми всі просто конкретні приклади\Nз нашими власними властивостями. Dialogue: 0,0:02:04.93,0:02:09.93,Default,,0000,0000,0000,,Тепер ми можемо фактично використовувати \Nоб'єктно-орієнтовані методи в JavaScript, Dialogue: 0,0:02:09.93,0:02:14.95,Default,,0000,0000,0000,,так що ці змінні Вінстон. Dialogue: 0,0:02:14.95,0:02:21.19,Default,,0000,0000,0000,,є лише примірниками об'єкта Вінстон так що\Nвони знають, що поділяють ці спільні риси. Dialogue: 0,0:02:21.19,0:02:26.80,Default,,0000,0000,0000,,Таким чином, щоб зробити це, спочатку нам\Nпотрібно описати цей абстрактний тип даних Dialogue: 0,0:02:26.80,0:02:30.90,Default,,0000,0000,0000,,Вінстон. І тому, ми зробимо це створюючи\Nзмінну Dialogue: 0,0:02:30.90,0:02:36.51,Default,,0000,0000,0000,,Ви зберігатимете тип даних в змінній. var \NWinston і зробимо W бо ми завжди починаємо Dialogue: 0,0:02:36.51,0:02:41.56,Default,,0000,0000,0000,,наші типи об'єктів з великої букви.\Nі ми встановимо його рівним функції. Dialogue: 0,0:02:41.95,0:02:46.78,Default,,0000,0000,0000,,І ця функція є спеціальною, яку ми\Nназиваємо "функція конструктор" Dialogue: 0,0:02:47.03,0:02:52.04,Default,,0000,0000,0000,,так як, це те, що викликатимемо кожен раз,\Nпри створенні нового примірника Вінстона Dialogue: 0,0:02:52.04,0:02:54.86,Default,,0000,0000,0000,,коли ми хочемо створити teenage\NWinston, то викликатимемо цю функцію Dialogue: 0,0:02:54.86,0:02:57.86,Default,,0000,0000,0000,,а коли adultWinston, то викликатимемо цю. Dialogue: 0,0:02:57.86,0:03:03.42,Default,,0000,0000,0000,,Отже, це означає, що ця функція повинна\Nприймати будь-які аргументи які слід знати Dialogue: 0,0:03:03.42,0:03:06.42,Default,,0000,0000,0000,,про те, щоб, зробити цілого Вінстона Dialogue: 0,0:03:06.42,0:03:11.32,Default,,0000,0000,0000,,Так що в цьому випадку вона повинена знати\Nім'я, вік, х, та у. Dialogue: 0,0:03:11.32,0:03:15.06,Default,,0000,0000,0000,,Тепер, коли ми отримали ті аргументи, нам\Nслід зробити щось з ними, Dialogue: 0,0:03:15.06,0:03:21.48,Default,,0000,0000,0000,,Отже, нам насправді потрібно приєднати цю\Nінформацію до об'єкта Вінстон. Dialogue: 0,0:03:21.48,0:03:25.67,Default,,0000,0000,0000,,Тому, ми використовуватимемо нове \Nспеціальне ключове слово, "this" [це]. І Dialogue: 0,0:03:25.67,0:03:28.67,Default,,0000,0000,0000,,"this" буде посилатися на конкретний\Nекземпляр об'єкта. Dialogue: 0,0:03:28.67,0:03:32.99,Default,,0000,0000,0000,,І так, введемо this.nickname, так що це \Nскаже, що все в порядку, властивість ім'я Dialogue: 0,0:03:32.99,0:03:34.92,Default,,0000,0000,0000,,цього об'єкта дорівнює Dialogue: 0,0:03:34.92,0:03:38.42,Default,,0000,0000,0000,,будь-що проходить в функцію \Nконструктора, гаразд? Dialogue: 0,0:03:38.42,0:03:43.59,Default,,0000,0000,0000,,І this.age = age, що буде надіслана в,\Nthis.x = х, яка буде проходити і Dialogue: 0,0:03:43.59,0:03:48.38,Default,,0000,0000,0000,,this.y = y що проходить Dialogue: 0,0:03:48.38,0:03:53.97,Default,,0000,0000,0000,,Гаразд, тепер у нас є цей абстрактний тип\Nданих з ім'ям Вінстон, і має функцію Dialogue: 0,0:03:53.97,0:03:57.50,Default,,0000,0000,0000,,конструктора, який можна використовувати\Nдля створення нового Вінстона. Dialogue: 0,0:03:57.50,0:03:59.03,Default,,0000,0000,0000,,Тому, спробуємо це! Dialogue: 0,0:04:00.33,0:04:05.24,Default,,0000,0000,0000,,Ми будемо створювати winstonTeen знову, \Nале на цей раз ми введемо winstonTeen = Dialogue: 0,0:04:05.24,0:04:10.38,Default,,0000,0000,0000,,і замість фігурних дужок, ми введемо\N"= new Winston". Dialogue: 0,0:04:10.38,0:04:13.95,Default,,0000,0000,0000,,Таким чином, ми вводимо, що"ми намагаємося\Nстворити новий екземпляр Вінстона" Dialogue: 0,0:04:13.95,0:04:22.30,Default,,0000,0000,0000,,а потім ми впустимо інформацію, яку їй\Nпотрібно "Winsteen", 15, 20, 50, гаразд? Dialogue: 0,0:04:22.30,0:04:27.50,Default,,0000,0000,0000,,І тоді ми можемо вилучити цей старий, так\Nяк він більше нам не потрібний. Dialogue: 0,0:04:27.50,0:04:31.08,Default,,0000,0000,0000,,Гаразд? І тепер, це створює\Nнового Winsteen. Dialogue: 0,0:04:31.08,0:04:35.72,Default,,0000,0000,0000,,І зараз ми можемо ввести\NwinstonAdult = new Winston() Dialogue: 0,0:04:35.72,0:04:39.96,Default,,0000,0000,0000,,і, звичайно, його звуть "пан\NWinst-багатий", миле ім'я Dialogue: 0,0:04:39.96,0:04:47.41,Default,,0000,0000,0000,,і йому 30, розатшований на 229 і 50. Так?\Nі тоді ми можемо видалити літерал об'єкт Dialogue: 0,0:04:47.41,0:04:50.81,Default,,0000,0000,0000,,І тада! наш код все ще працює. Dialogue: 0,0:04:50.81,0:04:58.09,Default,,0000,0000,0000,,Отже, ми зробили те про, що обговорювали\Nпро абстрактний тип даних яким є Вінстон. Dialogue: 0,0:04:58.09,0:05:02.27,Default,,0000,0000,0000,,і ми можемо створювати нові екземпляри\NВінстона, що мають ці властивості, які є Dialogue: 0,0:05:02.27,0:05:05.27,Default,,0000,0000,0000,,унікальними для них Dialogue: 0,0:05:05.27,0:05:08.80,Default,,0000,0000,0000,,І ми просто пам'ятатимемо ці властивості\Nвсередині них Dialogue: 0,0:05:08.80,0:05:14.38,Default,,0000,0000,0000,,Запам'ятовування є дійсно важливим. Отже,\Nтут всередині маємо this.nickname this.age Dialogue: 0,0:05:14.38,0:05:20.21,Default,,0000,0000,0000,,Якщо ми випадково, не матимемо this.age,\Nзверніть увагу говорить, що "не визначено" Dialogue: 0,0:05:20.21,0:05:23.10,Default,,0000,0000,0000,,Це тому, що тут, ця функція drawWinston, Dialogue: 0,0:05:23.10,0:05:28.16,Default,,0000,0000,0000,,очікує будь-який об'єкт, що проходить вона\Nчекає на властивість віку. Dialogue: 0,0:05:28.16,0:05:30.89,Default,,0000,0000,0000,,І якщо ми не ввели this.age, Dialogue: 0,0:05:30.89,0:05:34.03,Default,,0000,0000,0000,,то вона не має властивості віку, так? Ми \Nпередали її в функцію конструктора Dialogue: 0,0:05:34.03,0:05:37.53,Default,,0000,0000,0000,,але тоді ми нічого не робили, і нам слід\Nприкріпити його до об'єкту, використовуючи Dialogue: 0,0:05:37.53,0:05:39.36,Default,,0000,0000,0000,,ключове слово "this". Dialogue: 0,0:05:39.36,0:05:41.44,Default,,0000,0000,0000,,Таким чином, ми додамо це позаду Dialogue: 0,0:05:41.44,0:05:46.36,Default,,0000,0000,0000,,Тепер ви можете подумати добре, гаразд ваш\Nкод працює, а ви робите ці примхливі речі Dialogue: 0,0:05:46.36,0:05:50.59,Default,,0000,0000,0000,,Але, знаєте все те, що ми зробили це\Nвдосконалили те, що у нас було раніше Dialogue: 0,0:05:50.59,0:05:54.75,Default,,0000,0000,0000,,Але ось класна річ. Тепер всі наші\NВінстони проходять через одну і ту саму Dialogue: 0,0:05:54.75,0:05:55.100,Default,,0000,0000,0000,,функцію конструктора Dialogue: 0,0:05:55.100,0:06:00.83,Default,,0000,0000,0000,,Тому, якщо ми хочемо, ми можемо змінити\Nстан речей, змінити дещо про Вінстона... Dialogue: 0,0:06:00.83,0:06:06.36,Default,,0000,0000,0000,,Вінстонів, всередині тут. Отже, можливо\Nвік, ми насправді хочемо ввести "років" Dialogue: 0,0:06:06.36,0:06:11.02,Default,,0000,0000,0000,,Ми можемо просто покласти, це тут, і тепер\Nвсі наші Вінстони говорять "15 років", Dialogue: 0,0:06:11.02,0:06:12.80,Default,,0000,0000,0000,,"30 років", чи не так? Dialogue: 0,0:06:12.80,0:06:16.00,Default,,0000,0000,0000,,Таким чином, вони приймають ту частину, що\Nунікальною про них, але потім у них є Dialogue: 0,0:06:16.00,0:06:17.28,Default,,0000,0000,0000,,те, що спільне щодо них Dialogue: 0,0:06:17.28,0:06:20.97,Default,,0000,0000,0000,,І це дійсно класна річ щодо об'єктно-\Nорієнтованого програмування. ідея про те, Dialogue: 0,0:06:20.97,0:06:26.63,Default,,0000,0000,0000,,що ці види об'єктів в світі, і ви можете\Nстворювати екземпляри цих об'єктів Dialogue: 0,0:06:26.63,0:06:29.92,Default,,0000,0000,0000,,і є деякі речі, що схожі та як всі вони\Nмають ті ж властивості, Dialogue: 0,0:06:29.92,0:06:32.53,Default,,0000,0000,0000,,і є речі, що відрізняються як... ця\Nвластивість має інше значення, ніж ця Dialogue: 0,0:06:32.53,0:06:35.53,Default,,0000,0000,0000,,інша чи не так? Dialogue: 0,0:06:35.53,0:06:40.51,Default,,0000,0000,0000,,Але потім, ми можемо вичинити з ними \Nтак само і викликати ті ж функції Dialogue: 0,0:06:40.51,0:06:44.17,Default,,0000,0000,0000,,і використовувати їх аналогічним чином. \NОтже. це і є деякіі цікаві речі про Dialogue: 0,0:06:44.17,0:06:45.83,Default,,0000,0000,0000,,об'єктно-орієнтоване програмування Dialogue: 0,0:06:45.83,0:06:48.46,Default,,0000,0000,0000,,але як бачите, їх ще є набагато більше. Dialogue: 0,0:06:48.46,0:06:49.83,Default,,0000,0000,0000,,Отже, стежте за оновленнями!