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