Тепер, коли ви розумієте основи Javascript, я хочу навчити вас класному способу використання Javascript Щось, що ми називаємо "об'єктно-орієнтоване програмування" Але спочатку ми повинні зрозуміти, чому це насправді пригодиться Тому, я склала програму, що є кращою коли робитимемо її більш об'єктно-орієнтованою Тепер, це досить класна програма, щоб розпочати. Вгорі у мене є дві змінні, що зберігають прості літерали об'єктів всередині. Тепер об'єкт літерал є свого роду об'єкт, про який ми дізналися раніше, що ми створюємо з двома фігурними дужками а потім ми поміщаємо всі ці імена і значення властивостей, всередину. Отже, у нас є два з цих об'єктів з літерал значенням, а тоді знизу тут маємо цю функцію drawWinston, що очікує один аргумент, а потім він відтворює аргумент, малює картинку, на основі х та у властивостей об'єкту, а потім підпис на основі його псевдонімів і вікових властивостей. І тепер, нарешті, знизу, ми викликаємо drawWinston() onTeen та onAdult, І це те, що це робить. Показує його Дуже здорово. Тепер, якщо ми йдемо сюди, і ми подивимося на ці об'єкти літералів, зверніть увагу на те, що вони дуже похожі. Обидва мають однакові набори властивостей, і обидва з них можуть бути використані і тією ж функцією drawWinston (). Насправді, знаєте, якщо ви про це думаєте, вони дійсно описують тип Вінстон, так? І ми можемо думати, це може бути, свого роду абстрактний тип Вінстона в світі, і кожен Вінстон має той же набір властивостей, як псевдонім і вік, х та у і тут, те що ми зробили, це ми тільки що створили 2 примірника Вінстона щоб описати, певного Winston. Так що це підліток Вінстон, а це дорослий Вінстон. Але вони насправді, вони дійсно дуже схожі як є багато речей, які подібні про них. Якщо подумати, багато у світ працює так, і те, що у нас ці абстрактних типи даних, люди, народ і тоді ми всі просто конкретні приклади з нашими власними властивостями. Тепер ми можемо фактично використовувати об'єктно-орієнтовані методи в JavaScript, так що ці змінні Вінстон. є лише примірниками об'єкта Вінстон так що вони знають, що поділяють ці спільні риси. Таким чином, щоб зробити це, спочатку нам потрібно описати цей абстрактний тип даних Вінстон. І тому, ми зробимо це створюючи змінну Ви зберігатимете тип даних в змінній. var Winston і зробимо W бо ми завжди починаємо наші типи об'єктів з великої букви. і ми встановимо його рівним функції. І ця функція є спеціальною, яку ми називаємо "функція конструктор" так як, це те, що викликатимемо кожен раз, при створенні нового примірника Вінстона коли ми хочемо створити teenage Winston, то викликатимемо цю функцію а коли adultWinston, то викликатимемо цю. Отже, це означає, що ця функція повинна приймати будь-які аргументи які слід знати про те, щоб, зробити цілого Вінстона Так що в цьому випадку вона повинена знати ім'я, вік, х, та у. Тепер, коли ми отримали ті аргументи, нам слід зробити щось з ними, Отже, нам насправді потрібно приєднати цю інформацію до об'єкта Вінстон. Тому, ми використовуватимемо нове спеціальне ключове слово, "this" [це]. І "this" буде посилатися на конкретний екземпляр об'єкта. І так, введемо this.nickname, так що це скаже, що все в порядку, властивість ім'я цього об'єкта дорівнює будь-що проходить в функцію конструктора, гаразд? І this.age = age, що буде надіслана в, this.x = х, яка буде проходити і this.y = y що проходить Гаразд, тепер у нас є цей абстрактний тип даних з ім'ям Вінстон, і має функцію конструктора, який можна використовувати для створення нового Вінстона. Тому, спробуємо це! Ми будемо створювати winstonTeen знову, але на цей раз ми введемо winstonTeen = і замість фігурних дужок, ми введемо "= new Winston". Таким чином, ми вводимо, що"ми намагаємося створити новий екземпляр Вінстона" а потім ми впустимо інформацію, яку їй потрібно "Winsteen", 15, 20, 50, гаразд? І тоді ми можемо вилучити цей старий, так як він більше нам не потрібний. Гаразд? І тепер, це створює нового Winsteen. І зараз ми можемо ввести winstonAdult = new Winston() і, звичайно, його звуть "пан Winst-багатий", миле ім'я і йому 30, розатшований на 229 і 50. Так? і тоді ми можемо видалити літерал об'єкт І тада! наш код все ще працює. Отже, ми зробили те про, що обговорювали про абстрактний тип даних яким є Вінстон. і ми можемо створювати нові екземпляри Вінстона, що мають ці властивості, які є унікальними для них І ми просто пам'ятатимемо ці властивості всередині них Запам'ятовування є дійсно важливим. Отже, тут всередині маємо this.nickname this.age Якщо ми випадково, не матимемо this.age, зверніть увагу говорить, що "не визначено" Це тому, що тут, ця функція drawWinston, очікує будь-який об'єкт, що проходить вона чекає на властивість віку. І якщо ми не ввели this.age, то вона не має властивості віку, так? Ми передали її в функцію конструктора але тоді ми нічого не робили, і нам слід прикріпити його до об'єкту, використовуючи ключове слово "this". Таким чином, ми додамо це позаду Тепер ви можете подумати добре, гаразд ваш код працює, а ви робите ці примхливі речі Але, знаєте все те, що ми зробили це вдосконалили те, що у нас було раніше Але ось класна річ. Тепер всі наші Вінстони проходять через одну і ту саму функцію конструктора Тому, якщо ми хочемо, ми можемо змінити стан речей, змінити дещо про Вінстона... Вінстонів, всередині тут. Отже, можливо вік, ми насправді хочемо ввести "років" Ми можемо просто покласти, це тут, і тепер всі наші Вінстони говорять "15 років", "30 років", чи не так? Таким чином, вони приймають ту частину, що унікальною про них, але потім у них є те, що спільне щодо них І це дійсно класна річ щодо об'єктно- орієнтованого програмування. ідея про те, що ці види об'єктів в світі, і ви можете створювати екземпляри цих об'єктів і є деякі речі, що схожі та як всі вони мають ті ж властивості, і є речі, що відрізняються як... ця властивість має інше значення, ніж ця інша чи не так? Але потім, ми можемо вичинити з ними так само і викликати ті ж функції і використовувати їх аналогічним чином. Отже. це і є деякіі цікаві речі про об'єктно-орієнтоване програмування але як бачите, їх ще є набагато більше. Отже, стежте за оновленнями!