1 00:00:00,952 --> 00:00:04,229 Тепер, коли ви розумієте основи Javascript, я хочу навчити вас класному 2 00:00:04,229 --> 00:00:05,959 способу використання Javascript 3 00:00:05,959 --> 00:00:09,546 Щось, що ми називаємо "об'єктно-орієнтоване програмування" 4 00:00:09,546 --> 00:00:12,570 Але спочатку ми повинні зрозуміти, чому це насправді пригодиться 5 00:00:12,570 --> 00:00:17,668 Тому, я склала програму, що є кращою коли робитимемо її більш об'єктно-орієнтованою 6 00:00:17,668 --> 00:00:21,438 Тепер, це досить класна програма, щоб розпочати. Вгорі у мене є дві змінні, що 7 00:00:21,438 --> 00:00:24,898 зберігають прості літерали об'єктів всередині. 8 00:00:24,898 --> 00:00:27,938 Тепер об'єкт літерал є свого роду об'єкт, про який ми дізналися раніше, що ми 9 00:00:27,938 --> 00:00:30,448 створюємо з двома фігурними дужками 10 00:00:30,448 --> 00:00:34,409 а потім ми поміщаємо всі ці імена і значення властивостей, всередину. 11 00:00:34,409 --> 00:00:37,581 Отже, у нас є два з цих об'єктів з літерал значенням, а тоді знизу тут маємо 12 00:00:37,581 --> 00:00:40,579 цю функцію drawWinston, що очікує один аргумент, 13 00:00:40,879 --> 00:00:46,702 а потім він відтворює аргумент, малює картинку, на основі х та у властивостей 14 00:00:46,702 --> 00:00:53,107 об'єкту, а потім підпис на основі його псевдонімів і вікових властивостей. 15 00:00:53,107 --> 00:00:58,164 І тепер, нарешті, знизу, ми викликаємо drawWinston() onTeen та onAdult, 16 00:00:58,164 --> 00:01:01,012 І це те, що це робить. Показує його 17 00:01:01,012 --> 00:01:06,366 Дуже здорово. Тепер, якщо ми йдемо сюди, і ми подивимося на ці об'єкти літералів, 18 00:01:06,366 --> 00:01:11,410 зверніть увагу на те, що вони дуже похожі. 19 00:01:11,410 --> 00:01:14,842 Обидва мають однакові набори властивостей, і обидва з них можуть бути використані і 20 00:01:14,842 --> 00:01:17,842 тією ж функцією drawWinston (). 21 00:01:17,842 --> 00:01:24,072 Насправді, знаєте, якщо ви про це думаєте, вони дійсно описують тип Вінстон, так? 22 00:01:24,072 --> 00:01:28,796 І ми можемо думати, це може бути, свого роду абстрактний тип Вінстона в світі, 23 00:01:28,796 --> 00:01:36,460 і кожен Вінстон має той же набір властивостей, як псевдонім і вік, х та у 24 00:01:36,460 --> 00:01:42,092 і тут, те що ми зробили, це ми тільки що створили 2 примірника Вінстона 25 00:01:42,092 --> 00:01:48,465 щоб описати, певного Winston. Так що це підліток Вінстон, а це дорослий Вінстон. 26 00:01:48,465 --> 00:01:54,042 Але вони насправді, вони дійсно дуже схожі як є багато речей, які подібні про них. 27 00:01:54,042 --> 00:01:59,872 Якщо подумати, багато у світ працює так, і те, що у нас ці абстрактних типи даних, 28 00:01:59,872 --> 00:02:01,295 люди, народ 29 00:02:01,295 --> 00:02:04,928 і тоді ми всі просто конкретні приклади з нашими власними властивостями. 30 00:02:04,928 --> 00:02:09,928 Тепер ми можемо фактично використовувати об'єктно-орієнтовані методи в JavaScript, 31 00:02:09,928 --> 00:02:14,948 так що ці змінні Вінстон. 32 00:02:14,948 --> 00:02:21,194 є лише примірниками об'єкта Вінстон так що вони знають, що поділяють ці спільні риси. 33 00:02:21,194 --> 00:02:26,804 Таким чином, щоб зробити це, спочатку нам потрібно описати цей абстрактний тип даних 34 00:02:26,804 --> 00:02:30,900 Вінстон. І тому, ми зробимо це створюючи змінну 35 00:02:30,900 --> 00:02:36,514 Ви зберігатимете тип даних в змінній. var Winston і зробимо W бо ми завжди починаємо 36 00:02:36,514 --> 00:02:41,556 наші типи об'єктів з великої букви. і ми встановимо його рівним функції. 37 00:02:41,946 --> 00:02:46,780 І ця функція є спеціальною, яку ми називаємо "функція конструктор" 38 00:02:47,030 --> 00:02:52,042 так як, це те, що викликатимемо кожен раз, при створенні нового примірника Вінстона 39 00:02:52,042 --> 00:02:54,860 коли ми хочемо створити teenage Winston, то викликатимемо цю функцію 40 00:02:54,860 --> 00:02:57,860 а коли adultWinston, то викликатимемо цю. 41 00:02:57,860 --> 00:03:03,417 Отже, це означає, що ця функція повинна приймати будь-які аргументи які слід знати 42 00:03:03,417 --> 00:03:06,417 про те, щоб, зробити цілого Вінстона 43 00:03:06,417 --> 00:03:11,324 Так що в цьому випадку вона повинена знати ім'я, вік, х, та у. 44 00:03:11,324 --> 00:03:15,063 Тепер, коли ми отримали ті аргументи, нам слід зробити щось з ними, 45 00:03:15,063 --> 00:03:21,483 Отже, нам насправді потрібно приєднати цю інформацію до об'єкта Вінстон. 46 00:03:21,483 --> 00:03:25,672 Тому, ми використовуватимемо нове спеціальне ключове слово, "this" [це]. І 47 00:03:25,672 --> 00:03:28,672 "this" буде посилатися на конкретний екземпляр об'єкта. 48 00:03:28,672 --> 00:03:32,991 І так, введемо this.nickname, так що це скаже, що все в порядку, властивість ім'я 49 00:03:32,991 --> 00:03:34,921 цього об'єкта дорівнює 50 00:03:34,921 --> 00:03:38,419 будь-що проходить в функцію конструктора, гаразд? 51 00:03:38,419 --> 00:03:43,588 І this.age = age, що буде надіслана в, this.x = х, яка буде проходити і 52 00:03:43,588 --> 00:03:48,385 this.y = y що проходить 53 00:03:48,385 --> 00:03:53,970 Гаразд, тепер у нас є цей абстрактний тип даних з ім'ям Вінстон, і має функцію 54 00:03:53,970 --> 00:03:57,500 конструктора, який можна використовувати для створення нового Вінстона. 55 00:03:57,500 --> 00:03:59,027 Тому, спробуємо це! 56 00:04:00,327 --> 00:04:05,245 Ми будемо створювати winstonTeen знову, але на цей раз ми введемо winstonTeen = 57 00:04:05,245 --> 00:04:10,376 і замість фігурних дужок, ми введемо "= new Winston". 58 00:04:10,376 --> 00:04:13,950 Таким чином, ми вводимо, що"ми намагаємося створити новий екземпляр Вінстона" 59 00:04:13,950 --> 00:04:22,305 а потім ми впустимо інформацію, яку їй потрібно "Winsteen", 15, 20, 50, гаразд? 60 00:04:22,305 --> 00:04:27,502 І тоді ми можемо вилучити цей старий, так як він більше нам не потрібний. 61 00:04:27,502 --> 00:04:31,082 Гаразд? І тепер, це створює нового Winsteen. 62 00:04:31,082 --> 00:04:35,722 І зараз ми можемо ввести winstonAdult = new Winston() 63 00:04:35,722 --> 00:04:39,960 і, звичайно, його звуть "пан Winst-багатий", миле ім'я 64 00:04:39,960 --> 00:04:47,410 і йому 30, розатшований на 229 і 50. Так? і тоді ми можемо видалити літерал об'єкт 65 00:04:47,410 --> 00:04:50,812 І тада! наш код все ще працює. 66 00:04:50,812 --> 00:04:58,094 Отже, ми зробили те про, що обговорювали про абстрактний тип даних яким є Вінстон. 67 00:04:58,094 --> 00:05:02,272 і ми можемо створювати нові екземпляри Вінстона, що мають ці властивості, які є 68 00:05:02,272 --> 00:05:05,272 унікальними для них 69 00:05:05,272 --> 00:05:08,799 І ми просто пам'ятатимемо ці властивості всередині них 70 00:05:08,799 --> 00:05:14,379 Запам'ятовування є дійсно важливим. Отже, тут всередині маємо this.nickname this.age 71 00:05:14,379 --> 00:05:20,212 Якщо ми випадково, не матимемо this.age, зверніть увагу говорить, що "не визначено" 72 00:05:20,212 --> 00:05:23,103 Це тому, що тут, ця функція drawWinston, 73 00:05:23,103 --> 00:05:28,162 очікує будь-який об'єкт, що проходить вона чекає на властивість віку. 74 00:05:28,162 --> 00:05:30,894 І якщо ми не ввели this.age, 75 00:05:30,894 --> 00:05:34,029 то вона не має властивості віку, так? Ми передали її в функцію конструктора 76 00:05:34,029 --> 00:05:37,533 але тоді ми нічого не робили, і нам слід прикріпити його до об'єкту, використовуючи 77 00:05:37,533 --> 00:05:39,363 ключове слово "this". 78 00:05:39,363 --> 00:05:41,444 Таким чином, ми додамо це позаду 79 00:05:41,444 --> 00:05:46,361 Тепер ви можете подумати добре, гаразд ваш код працює, а ви робите ці примхливі речі 80 00:05:46,361 --> 00:05:50,589 Але, знаєте все те, що ми зробили це вдосконалили те, що у нас було раніше 81 00:05:50,589 --> 00:05:54,746 Але ось класна річ. Тепер всі наші Вінстони проходять через одну і ту саму 82 00:05:54,746 --> 00:05:55,996 функцію конструктора 83 00:05:55,996 --> 00:06:00,830 Тому, якщо ми хочемо, ми можемо змінити стан речей, змінити дещо про Вінстона... 84 00:06:00,830 --> 00:06:06,360 Вінстонів, всередині тут. Отже, можливо вік, ми насправді хочемо ввести "років" 85 00:06:06,360 --> 00:06:11,024 Ми можемо просто покласти, це тут, і тепер всі наші Вінстони говорять "15 років", 86 00:06:11,024 --> 00:06:12,804 "30 років", чи не так? 87 00:06:12,804 --> 00:06:16,001 Таким чином, вони приймають ту частину, що унікальною про них, але потім у них є 88 00:06:16,001 --> 00:06:17,281 те, що спільне щодо них 89 00:06:17,281 --> 00:06:20,968 І це дійсно класна річ щодо об'єктно- орієнтованого програмування. ідея про те, 90 00:06:20,968 --> 00:06:26,632 що ці види об'єктів в світі, і ви можете створювати екземпляри цих об'єктів 91 00:06:26,632 --> 00:06:29,925 і є деякі речі, що схожі та як всі вони мають ті ж властивості, 92 00:06:29,925 --> 00:06:32,528 і є речі, що відрізняються як... ця властивість має інше значення, ніж ця 93 00:06:32,528 --> 00:06:35,528 інша чи не так? 94 00:06:35,528 --> 00:06:40,511 Але потім, ми можемо вичинити з ними так само і викликати ті ж функції 95 00:06:40,511 --> 00:06:44,169 і використовувати їх аналогічним чином. Отже. це і є деякіі цікаві речі про 96 00:06:44,169 --> 00:06:45,829 об'єктно-орієнтоване програмування 97 00:06:45,829 --> 00:06:48,460 але як бачите, їх ще є набагато більше. 98 00:06:48,460 --> 00:06:49,830 Отже, стежте за оновленнями!