WEBVTT 00:00:00.952 --> 00:00:04.229 Тепер, коли ви розумієте основи Javascript, я хочу навчити вас класному 00:00:04.229 --> 00:00:05.959 способу використання Javascript 00:00:05.959 --> 00:00:09.546 Щось, що ми називаємо "об'єктно-орієнтоване програмування" 00:00:09.546 --> 00:00:12.570 Але спочатку ми повинні зрозуміти, чому це насправді пригодиться 00:00:12.570 --> 00:00:17.668 Тому, я склала програму, що є кращою коли робитимемо її більш об'єктно-орієнтованою 00:00:17.668 --> 00:00:21.438 Тепер, це досить класна програма, щоб розпочати. Вгорі у мене є дві змінні, що 00:00:21.438 --> 00:00:24.898 зберігають прості літерали об'єктів всередині. 00:00:24.898 --> 00:00:27.938 Тепер об'єкт літерал є свого роду об'єкт, про який ми дізналися раніше, що ми 00:00:27.938 --> 00:00:30.448 створюємо з двома фігурними дужками 00:00:30.448 --> 00:00:34.409 а потім ми поміщаємо всі ці імена і значення властивостей, всередину. 00:00:34.409 --> 00:00:37.581 Отже, у нас є два з цих об'єктів з літерал значенням, а тоді знизу тут маємо 00:00:37.581 --> 00:00:40.579 цю функцію drawWinston, що очікує один аргумент, 00:00:40.879 --> 00:00:46.702 а потім він відтворює аргумент, малює картинку, на основі х та у властивостей 00:00:46.702 --> 00:00:53.107 об'єкту, а потім підпис на основі його псевдонімів і вікових властивостей. 00:00:53.107 --> 00:00:58.164 І тепер, нарешті, знизу, ми викликаємо drawWinston() onTeen та onAdult, 00:00:58.164 --> 00:01:01.012 І це те, що це робить. Показує його 00:01:01.012 --> 00:01:06.366 Дуже здорово. Тепер, якщо ми йдемо сюди, і ми подивимося на ці об'єкти літералів, 00:01:06.366 --> 00:01:11.410 зверніть увагу на те, що вони дуже похожі. 00:01:11.410 --> 00:01:14.842 Обидва мають однакові набори властивостей, і обидва з них можуть бути використані і 00:01:14.842 --> 00:01:17.842 тією ж функцією drawWinston (). 00:01:17.842 --> 00:01:24.072 Насправді, знаєте, якщо ви про це думаєте, вони дійсно описують тип Вінстон, так? 00:01:24.072 --> 00:01:28.796 І ми можемо думати, це може бути, свого роду абстрактний тип Вінстона в світі, 00:01:28.796 --> 00:01:36.460 і кожен Вінстон має той же набір властивостей, як псевдонім і вік, х та у 00:01:36.460 --> 00:01:42.092 і тут, те що ми зробили, це ми тільки що створили 2 примірника Вінстона 00:01:42.092 --> 00:01:48.465 щоб описати, певного Winston. Так що це підліток Вінстон, а це дорослий Вінстон. 00:01:48.465 --> 00:01:54.042 Але вони насправді, вони дійсно дуже схожі як є багато речей, які подібні про них. 00:01:54.042 --> 00:01:59.872 Якщо подумати, багато у світ працює так, і те, що у нас ці абстрактних типи даних, 00:01:59.872 --> 00:02:01.295 люди, народ 00:02:01.295 --> 00:02:04.928 і тоді ми всі просто конкретні приклади з нашими власними властивостями. 00:02:04.928 --> 00:02:09.928 Тепер ми можемо фактично використовувати об'єктно-орієнтовані методи в JavaScript, 00:02:09.928 --> 00:02:14.948 так що ці змінні Вінстон. 00:02:14.948 --> 00:02:21.194 є лише примірниками об'єкта Вінстон так що вони знають, що поділяють ці спільні риси. 00:02:21.194 --> 00:02:26.804 Таким чином, щоб зробити це, спочатку нам потрібно описати цей абстрактний тип даних 00:02:26.804 --> 00:02:30.900 Вінстон. І тому, ми зробимо це створюючи змінну 00:02:30.900 --> 00:02:36.514 Ви зберігатимете тип даних в змінній. var Winston і зробимо W бо ми завжди починаємо 00:02:36.514 --> 00:02:41.556 наші типи об'єктів з великої букви. і ми встановимо його рівним функції. 00:02:41.946 --> 00:02:46.780 І ця функція є спеціальною, яку ми називаємо "функція конструктор" 00:02:47.030 --> 00:02:52.042 так як, це те, що викликатимемо кожен раз, при створенні нового примірника Вінстона 00:02:52.042 --> 00:02:54.860 коли ми хочемо створити teenage Winston, то викликатимемо цю функцію 00:02:54.860 --> 00:02:57.860 а коли adultWinston, то викликатимемо цю. 00:02:57.860 --> 00:03:03.417 Отже, це означає, що ця функція повинна приймати будь-які аргументи які слід знати 00:03:03.417 --> 00:03:06.417 про те, щоб, зробити цілого Вінстона 00:03:06.417 --> 00:03:11.324 Так що в цьому випадку вона повинена знати ім'я, вік, х, та у. 00:03:11.324 --> 00:03:15.063 Тепер, коли ми отримали ті аргументи, нам слід зробити щось з ними, 00:03:15.063 --> 00:03:21.483 Отже, нам насправді потрібно приєднати цю інформацію до об'єкта Вінстон. 00:03:21.483 --> 00:03:25.672 Тому, ми використовуватимемо нове спеціальне ключове слово, "this" [це]. І 00:03:25.672 --> 00:03:28.672 "this" буде посилатися на конкретний екземпляр об'єкта. 00:03:28.672 --> 00:03:32.991 І так, введемо this.nickname, так що це скаже, що все в порядку, властивість ім'я 00:03:32.991 --> 00:03:34.921 цього об'єкта дорівнює 00:03:34.921 --> 00:03:38.419 будь-що проходить в функцію конструктора, гаразд? 00:03:38.419 --> 00:03:43.588 І this.age = age, що буде надіслана в, this.x = х, яка буде проходити і 00:03:43.588 --> 00:03:48.385 this.y = y що проходить 00:03:48.385 --> 00:03:53.970 Гаразд, тепер у нас є цей абстрактний тип даних з ім'ям Вінстон, і має функцію 00:03:53.970 --> 00:03:57.500 конструктора, який можна використовувати для створення нового Вінстона. 00:03:57.500 --> 00:03:59.027 Тому, спробуємо це! 00:04:00.327 --> 00:04:05.245 Ми будемо створювати winstonTeen знову, але на цей раз ми введемо winstonTeen = 00:04:05.245 --> 00:04:10.376 і замість фігурних дужок, ми введемо "= new Winston". 00:04:10.376 --> 00:04:13.950 Таким чином, ми вводимо, що"ми намагаємося створити новий екземпляр Вінстона" 00:04:13.950 --> 00:04:22.305 а потім ми впустимо інформацію, яку їй потрібно "Winsteen", 15, 20, 50, гаразд? 00:04:22.305 --> 00:04:27.502 І тоді ми можемо вилучити цей старий, так як він більше нам не потрібний. 00:04:27.502 --> 00:04:31.082 Гаразд? І тепер, це створює нового Winsteen. 00:04:31.082 --> 00:04:35.722 І зараз ми можемо ввести winstonAdult = new Winston() 00:04:35.722 --> 00:04:39.960 і, звичайно, його звуть "пан Winst-багатий", миле ім'я 00:04:39.960 --> 00:04:47.410 і йому 30, розатшований на 229 і 50. Так? і тоді ми можемо видалити літерал об'єкт 00:04:47.410 --> 00:04:50.812 І тада! наш код все ще працює. 00:04:50.812 --> 00:04:58.094 Отже, ми зробили те про, що обговорювали про абстрактний тип даних яким є Вінстон. 00:04:58.094 --> 00:05:02.272 і ми можемо створювати нові екземпляри Вінстона, що мають ці властивості, які є 00:05:02.272 --> 00:05:05.272 унікальними для них 00:05:05.272 --> 00:05:08.799 І ми просто пам'ятатимемо ці властивості всередині них 00:05:08.799 --> 00:05:14.379 Запам'ятовування є дійсно важливим. Отже, тут всередині маємо this.nickname this.age 00:05:14.379 --> 00:05:20.212 Якщо ми випадково, не матимемо this.age, зверніть увагу говорить, що "не визначено" 00:05:20.212 --> 00:05:23.103 Це тому, що тут, ця функція drawWinston, 00:05:23.103 --> 00:05:28.162 очікує будь-який об'єкт, що проходить вона чекає на властивість віку. 00:05:28.162 --> 00:05:30.894 І якщо ми не ввели this.age, 00:05:30.894 --> 00:05:34.029 то вона не має властивості віку, так? Ми передали її в функцію конструктора 00:05:34.029 --> 00:05:37.533 але тоді ми нічого не робили, і нам слід прикріпити його до об'єкту, використовуючи 00:05:37.533 --> 00:05:39.363 ключове слово "this". 00:05:39.363 --> 00:05:41.444 Таким чином, ми додамо це позаду 00:05:41.444 --> 00:05:46.361 Тепер ви можете подумати добре, гаразд ваш код працює, а ви робите ці примхливі речі 00:05:46.361 --> 00:05:50.589 Але, знаєте все те, що ми зробили це вдосконалили те, що у нас було раніше 00:05:50.589 --> 00:05:54.746 Але ось класна річ. Тепер всі наші Вінстони проходять через одну і ту саму 00:05:54.746 --> 00:05:55.996 функцію конструктора 00:05:55.996 --> 00:06:00.830 Тому, якщо ми хочемо, ми можемо змінити стан речей, змінити дещо про Вінстона... 00:06:00.830 --> 00:06:06.360 Вінстонів, всередині тут. Отже, можливо вік, ми насправді хочемо ввести "років" 00:06:06.360 --> 00:06:11.024 Ми можемо просто покласти, це тут, і тепер всі наші Вінстони говорять "15 років", 00:06:11.024 --> 00:06:12.804 "30 років", чи не так? 00:06:12.804 --> 00:06:16.001 Таким чином, вони приймають ту частину, що унікальною про них, але потім у них є 00:06:16.001 --> 00:06:17.281 те, що спільне щодо них 00:06:17.281 --> 00:06:20.968 І це дійсно класна річ щодо об'єктно- орієнтованого програмування. ідея про те, 00:06:20.968 --> 00:06:26.632 що ці види об'єктів в світі, і ви можете створювати екземпляри цих об'єктів 00:06:26.632 --> 00:06:29.925 і є деякі речі, що схожі та як всі вони мають ті ж властивості, 00:06:29.925 --> 00:06:32.528 і є речі, що відрізняються як... ця властивість має інше значення, ніж ця 00:06:32.528 --> 00:06:35.528 інша чи не так? 00:06:35.528 --> 00:06:40.511 Але потім, ми можемо вичинити з ними так само і викликати ті ж функції 00:06:40.511 --> 00:06:44.169 і використовувати їх аналогічним чином. Отже. це і є деякіі цікаві речі про 00:06:44.169 --> 00:06:45.829 об'єктно-орієнтоване програмування 00:06:45.829 --> 00:06:48.460 але як бачите, їх ще є набагато більше. 00:06:48.460 --> 00:06:49.830 Отже, стежте за оновленнями!