>> Гаразд, сьогодні, Я збираюся говорити
про JavaScript і як це відрізняється від інших мовах
що ви могли б бути любив PHP.
Таким чином, в останній лекції з Понеділок, ми трохи поговорили
про те, що схоже, що знайомі між JavaScript
і PHP або Python або Рубін або С або інших мовах
що ви вже знайомі.
Але в JavaScript насправді є дійсно унікальне взяття
на об'єктній моделі, що робить він ніби як зовсім інший
ніж більшість мов, ви збираєтеся мати справу.
Так функції свого роду
з недооціненим Концепція в JavaScript.
Вони спосіб більш потужним, ніж вони знаходяться в інших мовах
тому що вони можуть в - з однієї причини,
вони в змозі бути встановити в якості значень.
Так прямо тут у нас є вар х дорівнює функцію
і це перший клас значення, яке може бути передано
навколо як аргумент.
Таким чином, ви не повинні оголосити функцію х
і просто використовувати х у цій галузі.
Ви можете передати значення х в будь-якому місці по всьому, ви знаєте,
як аргумент на інша функція
де можна модуль експорту Давид згадується у вузлі.
Так що наступного Справа в тому,
що функція об'єкт в JavaScript.
Таким чином, ви можете фактично встановити властивості, як значний
на функції і просто лікувати це схоже, що це об'єкт.
Тому, коли ви працюєте з JQuery, ви знаєте, що долар
а потім ви передаєте селектор в нього
і викликати його як функцію.
Але тоді ви також вже долар точка AJAX.
І це не свого роду сенс, якщо ви думаєте,
функції так само, як бути то, що ви можете викликати
або зателефонуйте.
Але в JavaScript дозволяє задати властивості функцій
як статичні властивості тільки з х точка someProp
як я вказував там.
Наступний момент, який ми буду вдаватися в трохи більше
в глибину є той факт, що Функції можуть бути оброблені
як класи в JavaScript.
Так що є поняття цього нового оператора
яка створює новий екземпляр функція поряд зі свого роду
начебто тілі класу, як який поставляється разом з нею
і ми збираємося піти в нього трохи більше,
це називається прототипом.
І це те, що робить JavaScript дуже унікальний порівнянні
на інші мови які клас основі,
JavaScript є прототипом основі.
А потім просто на нижня там,
функція може просто назвати ясно, як ми звикли.
Так що немає нічого нового.
Інша справа, що це унікальна є
що масиви є насправді об'єктів.
Вони не схожі на вони знаходяться в PHP
де ви просто створити новий масив.
Насправді це скорочення за висловлювання новий масив.
І масив насправді підклас об'єкта.
Так от те, різні, і я піду
в трохи більш докладніше на цьому.
І можливості налагодження
з JavaScript дійсно рівних, наскільки я бачив.
Це скріншот з Chrome Inspector
які ми збираємося використовувати для решти
презентації сьогодні.
І, щоб дістатися до цього, ви просто піти подати інструменти для розробників
і відкриті Хром інспектор або ви можете натиснути правою кнопкою
і натисніть шоу елемент I думаю, що це на HTML сторінці
або я думаю, що це команда варіант J відкриває це.
Але ми будемо йти в це, і ви може насправді встановити точки зупину
як ви працюєте через код JavaScript і сортування
з оцінити те, що місцевий змінні, яке значення
цього є і це робить його спосіб легше налагодження коду.
І не - це не змушений стороні браузера код
але ви можете насправді запустити екземпляр
цієї Chrome Inspector для вашого коду на стороні служби
який є дуже акуратним, тому що вам можна покроково рядок за рядком
як запит приходить у ваш сервер і побачити, що відбувається
і грати з змінними в консолі тут.
Так як я вже говорив, JavaScript це мова на базі прототипів
Це означає, що існує безліч значень за замовчуванням, які начебто
прихованих для кожної функції
в об'єктній точки Прототип власності.
Так що це свого роду хеш просто різні значення за замовчуванням
що при виклику функціонувати з нового ключового слова,
тих, встановлюються за замовчуванням як функції
, Які доступні на екземплярі.
Так що насправді є дійсно ефективним для -
це ефективний спосіб Створення об'єктів пам'яті мудрим
бо JavaScript виконання тільки повинен відстежувати
прототипу об'єкта.
Це свого роду вказує на, що
коли ви cretae новий Примірник класу.
І ви також можете імітувати спадкування як відомо
в мовах на базі класів де у вас є свого роду
начебто це поширюється, що, поширюється, що ви можете імітувати
, Що в JavaScript через те, що називається
ланцюжок прототипів.
І ми побачимо приклади про це.
Так що якщо ваш - JQuery плагіни насправді вони рекомендують JQuery
Автори, щоб використовувати долар точку Fn, щоб додати функціональність
в бібліотеку JQuery.
І ми насправді збирається перейти до - Так, на цій сторінці,
у нас є долар - Я включив JQuery.
І якщо ви робите долар точка в консолі
про який я говорив у результаті чого Ви через команду зсуву J
або тільки збираєтеся Перегляд, Розробник, Інструменти розробника
і перейшовши на вкладку Sources.
[Нерозбірливість Зауваження]
Так, звичайно. Тому, коли я почав ввести змінну,
це авто-завершення для мене те, що доступно там.
Так я набрав в долар, і я можу см. Я думаю, Chrome має деякі
вбудований долара, долар і долар х.
Так що зараз я просто хочу Долар і я поклав в точку.
А потім він показує мені всі властивості
, Які доступні на об'єкті JQuery.
Але якщо я роблю долар точка прототип,
Тепер я бачу, всі методи що я звик до використання
коли у мене є долар, селектор а потім я ланцюг від, що з,
Ви знаєте, додати клас або додати або розмиття або будь-який з т.п..
Це все насправді на прототипі
який під капотом JQuery створює новий екземпляр собі
і це свого роду приховує всі ці деталі з вас.
Так і справа, що я був роблячи назад сюди
з функцією, вони насправді приховують прототип від вас
і просто псевдонім нього до долара точка Fn.
Тому більшість людей насправді не розуміють,
що існує прототип Під капотом that's -
що ви можете підключитися до і додати додаткову функціональність
в кожному випадку JQuery якщо ви хочете.
Таким чином, "новий" оператор дійсно свого роду важко
спочатку розібратися.
При виклику функції з "новим",
це зовсім інше спосіб виклику функції
як ніби ви тільки називається це ясно.
Так створюється "новий" оператор те, що називається новий екземпляр
об'єкта або новий екземпляр, ви можете думати
об'єкта як класу.
І коли це відбувається, значення це які можуть бути знайомі
с з JQuery, вони як би встановити це
до того, що зручно в той час.
Вони, як правило, встановити його на струм DOM вузол, який ви
на, як ви збираєтеся через як кожен або щось в цьому роді.
Вони - передбачається Це значення як значення примірника
що ви створили з "новим", який включає в себе всі
на ланцюжку прототипів і все з методів, які ви знайшли б
як властивості прототипів.
Таким чином, це залежить від того, наскільки функція викликається,
що величина це.
І це дійсно оману якщо ви новачок в JavaScript.
Але кожна функція, що називається має - має на це значення.
Так що навіть якщо ви не створили Новий екземпляр чогось,
що це передбачається бути глобальним.
Або ви можете викликати функцію з використанням методу виклику
де метод застосовується в JavaScript.
Ви можете функцію і вказати, що це має бути.
Таким чином, ви можете зробити це динамічний, які дійсно потужний
але і дозволяє робити речі, що можуть вводити в оману
і ввести в оману інші розробники
якщо вони не використовують на те,.
І JQuery, я б сказав, робить його ще більш заплутаним
на що робить його зручним і встановивши її
до поточного вузла DOM.
Але просте правило, щоб пам'ятати що величина це
коли ви шукаєте
на функціональному виклику є що залишилося від точки.
Так що якщо у вас є об'єкт
і це те, точка щось функція
що ви телефонуєте то Перше значення те, що значення
з цього.
Так ось приклад коду
де я створюю новий об'єкт буквальне
який є лише об'єктом створений з фігурними дужками
і я встановлюю ім'я Бобу
а потім у мене є sayName Метод тут, який -
так всередині цієї sayName якщо я х точка sayName,
Значення цієї дорівнює до х, тому що ліва
з комою, від х. Так що, якщо Я називаю це х точкової sayName,
було б привітатися Боб.
А потім ще один приклад
де я насправді присвоєння х точка sayName, функція
до змінної Y, який, як я вже говорив
в JavaScript тебе можна призначити функції
змінним коли ви хочете, це дійсно гнучкий, що шлях,
але тепер, коли я дзвоню Y, він втрачений контекст х.
Так що це тепер глобальний або якщо ви перебуваєте в суворому режимі,
Я вважаю, що нуль або не визначено.
Але - Так Y не те, що ви очікуючи тут, якщо ви шукаєте
в точці х, і ви збираєтеся подзвонити sayName,
Ви очікуєте це ім'я , Як передбачається, Боб.
Але якщо ви здійснили це об'єкт і назвав його
сам по собі, то тепер це глобальна.
І ось що я згадував коли ви бачите долар точка цього,
ви часто не думають про що відбувається насправді.
Але JQuery роду має свої власне предметно-орієнтована мова
для боротьби з цим і це не те, що ви звикли
в JavaScript.
І я вказую на це тому що це дійсно важливо
для написання добре структурована об'єктно-орієнтований код
в JavaScript, щоб дійсно мати хороше розуміння і розуміння
як це працює і як об'єктної моделі роботи
і як новий оператор працює.
В іншому випадку, ви в кінцевому з JQuery спагетті
де все начебто з повсюдно
і тільки справу з DOM.
Якщо ви можете насправді написати Javascript
в більш структурованому вигляді, це робить його набагато простіше
працювати, щоб розібратися з відокремити проблеми
з займаються поновлення DOM і справу
з фактичною логіки та коду.
Отже, давайте поглянемо на Кілька прикладів навколо цього.
Тому у мене є кілька прикладів тут.
Так що це всього лише простий приклад використання об'єкта JavaScript
і додавши кілька функцій до нього і потім створити свого роду
з як мініатюрний застосування.
Так що це дуже просто насправді.
Єдине, що вона робить це спочатку запрошувати ваше ім'я.
Так що я буду говорити, Тім, а потім ви може змінити своє ім'я Бобу.
І ось все це Додаток робить.
Але те, що я хотів би відзначити від'їзді як він це робить.
Так що у мене це ім'я генератор об'єкт, який має метод запуску
який просить користувача для їхнього імені
, Просто називаючи це askForName
які тут це робить запрошенні
якщо ім'я не було присвоєно Потім він просить за нього знову
по телефону цю askForName.
А потім, як тільки він отримує ім'я, він викликає це ім'я оновлення.
Так що це потім встановлює Ім'я користувача в h1 тег.
І якщо ім'я не встановлений, він видає помилку.
[Нерозбірливість Зауваження]
Так, звичайно. Так він встановлює Ім'я користувача в h1 тег
по телефону setDisplayName який встановлює HTML
в полі Ім'я JS контейнера і Я випереджаючи всі мої HTML
з JS селектори тільки тому, що це хороша звичка
в тільки, щоб зробити це не так бентежить
коли ви використовуєте селектори як ідентифікатори або класів
для обох стиль і логіку
у вашому JavaScript передній кінець додатків.
Бо якщо у вас є різні групи людей, що працюють
на кодової базі, і ви є селектор є
що дизайнер вирішує змінити, тому що it's -
не виглядає великим, тому вони хочуть поставити в новому класі і прийняти
з ваш і ви покладаєтеся на нього в цілях, JavaScript,
то ваш код ламає.
Це добре як префікс і сортувати
з, як імен майже JavaScript пов'язані класи
або атрибути з префіксом JS.
Так що це досить просто, і ви можете бачити
у всіх цих випадках я називаючи повернутися це наприкінці.
Так що це добре звичка,
щоб дати вам його в діє що повертається.
У askForName я не тому, що має сенс
що ви отримаєте ім'я назад.
Але що, що дозволяє вам робити те
якщо ви повернетеся це оновлення назвати, він повертає значення
з setDisplayName що повернення значення цього.
І, що дозволяє сортувати ланцюга, як ви звикли
в JQuery, повернувши значення цього кожен раз.
Це відноситься до поточні об'єкти
так що ви могли б назвати це точка askForName точка setDisplayName
і він буде тримати Значення цього і дозволяють вам
щоб мати хорошу ланцюжок там.
А потім в - так в це другий приклад.
[Пауза]
Добре.
ОК. Так що давайте йти вперед і відкрийте консоль
і піти в мій вкладці Sources.
Ми будемо поп на це насправді.
Таким чином, в розробника Chrome інструменти, які я вже згадував,
Тобто цей шматок на право і -
Ви можете побачити цей знак зупинки хоча за замовчуванням він чорний.
Але при наведенні покажчика миші над ним, він каже: "Не робіть паузу на винятках.
Натисніть на паузу на всі виключення. "
І коли ви клацніть по ньому знову ж, це стає синім.
І тепер в будь-який час, що є помилка кинутий
в коді JavaScript, воно буде зупинитися в точці і дозволяють вам
оцінити, що відбувається.
Так - І це дійсно корисно Концепція збирається відзначити.
І потім, якщо ви натиснете знову, виходить фіолетовий
і це, як правило що я тримаю його дюйма
Це тільки розбиває код коли є виняток
, Який не був спійманий.
Так багато разів в JQuery для Примірник, вони дійсно намагаються уловів
для перевірки або браузер є якась можливість
і продовжити звідти.
Це тільки тоді, коли є помилка
, Який не був спійманий в спробу улову.
Так давайте спробуємо уявити ім'я, яке є порожнім.
Так що я можу бачити, що Код тепер зупинився
на метод updateName і я можу миші на імена
і подивитися, що це марна порожнім.
Там він дорівнює порожнім.
Так що, якщо не назвати кинути новий помилки і тепер я можу відсторонитися
через функцію колонка і сказати: "ОК,
де це взялося ", і побачити, що значення клієнтом.
Так що має метод askForName,
setDisplayName старт і updateName.
І це тільки дійсно корисний як ви можете бачити є всі
змінні, які доступні в цьому обсязі, а
як замикання змінних тому все, що закрито
над цією функцією.
І так я бачу, що - що величина клієнтом
і що величина це.
Так що це тому що ми в JQuery дорівнює
на поточний елемент DOM.
Але це дійсно корисно для налагодження коду
прорватися на помилки, як це.
Ще одна особливість Хром Інспектор
що в будь-який момент ви можете натисніть на різних ліній
в рядку, і він буде перерву в місцях
де ви встановити точки зупину вони називають.
Так що, якщо я натискаю, лінія стає синім.
Отже, дозвольте мені продовжити виконання тут, добре, що зламався.
А тепер давайте встановимо ім'я Алісі та натисніть кнопку Надіслати.
Так що тепер я можу бачити навіть перш ніж він потрапив в точку
оновлення всі, то тепер зупинився прямо ось так я бачу
що моя це ім'я Аліса і тоді я можу продовжити -
дозвольте мені перезавантажте сторінку.
Гаразд, так що тепер, що це починаючи з початку знову,
він зупинився на цьому лінія, і я бачу
це ім'я в даний час визначено.
askForName є які функціонують його є, таким чином, це також часто корисно
якщо у вас є функції, які з різних файлів
або різні місця в Код, ви можете побачити, де це,
, А потім перейти до того, що, він буде виділити його.
Так добре, щоб увійти у звичку використання засоби налагодження
що не тільки втішити журнал крапка.
Отже, давайте подивитися на другого прикладу
що робить більш широкого використання прототипи, як я згадував.
Таким чином, в цьому прикладі
ми створюємо новий Функція називається CS
і це капіталізуються так стандартну угоду
в JavaScript, якщо функція повинна бути використана
в якості конструктора, на відміну
щоб просто нормальний Функція, ви вигоду його.
Так що у мене капіталу CS і це приймає змінне CourseID
і courseTitle які Я налаштований на цей CourseID,
це courseTitle в конструкторі.
І тоді я також встановити студентів та лекції як порожні масиви.
Так що причина, що ви -
Отже, прототип властивості були потім визначені
тут з - так шаблон це просто невеликий підкреслення
Шаблон, шаблон підкреслення бути так, що ви можете -
схожий на шаблонах що Давид згадав
на сервері, ви можете просто написати тег сценарію
який не є JavaScript Сценарій але текст HTML
і що я роблю з JQuery є -
це не заважає їх відкритим, так, там ми йдемо.
З JQuery, вона стає HTML значення цього шаблону
а потім запустити його через підкреслюють комунальні бібліотеки
двигун шаблон.
Таким чином, документація тому що це тут
за шаблоном утиліти
але в основному ви можете прочитати трохи більше про це.
Але він оцінює цей рядок і перетворює його у функцію
, Які ми зможемо передавати дані в і це називають динамічно.
Наступні два методи, які я маю є addStudent і addLecture.
Вони просто додайте їх у внутрішні масиви, які я встановив
в конструкторі і то метод візуалізації.
Так, давайте створимо новий Примірник CS називається 164
який має цей курс число 164 і назва.
А потім CS50, який має CS50 і введення в CS1
, А потім додати кілька лекції студентам
а потім викликати CS50 візуалізації.
І якщо я запускати код, так що Я роблю, що з Eval.
Ви ніколи не хочете використовувати Eval, але я тільки вид
приймати всі JavaScript це тут
і виконання його на льоту.
Він надає в цій шаблон ці нові екземпляри
класу CS, які мають властивості, тому ми пішли
до кінця і зробити addLecture і addStudent друг.
І як я вже говорив тому що я повернутися в цьому,
Я можу насправді ланцюг них addLecture і addStudent дзвінки
і він буде працювати так само добре.
Інша особливість в JavaScript тобто ще більш корисним
на стороні сервера, де Ви дійсно в будь-який момент часу
якщо ваш додаток отримує більше не знаю, де ви знаходитесь
і це важче встановити ці окремі точки зупину
що я вже згадував у Інспектор Хром
використовувати ключове слово відладчика.
Так що це просто D-Е-В-П-Г-Г-Е-Р.
І коли ви кладете відладчик Ключове слово в коді
і у вас є - там ми йдемо, два Gs.
Коли ви кладете відладчик Ключове слово в коді
і ви працюєте відладчик
таких як Chrome Інспектор тут
або на стороні сервера Chrome Інспектор, це говорить наявність
, Щоб зупинити виконання в цьому рядку коду, а потім він дозволяє вам
покроково решті виконання кодів.
Так що, якщо я натискаю виконати код тут, то тепер зупинки
в цьому відладчика лінії, і я можу см. Добре, от значення CS50
і це є, звичайно назва, звичайно ID,
це не має жодного лекції, немає студентів.
І тоді я можу покроково вся addLecture,
Я бачу, що це штовхає на цих лекціях,
миші на тому, що, "Hello World".
Я можу насправді в Консоль зробити це так, це встановлено
до поточного об'єкту що ви дюйма
Ця лекція є "Hello World".
І тримати степпінг через стільки, скільки я хочу.
Якщо я не хочу, щоб крок
в причини виклику функції ' Я знаю, що відбувається
зробити вдаючись у addLecture, Тобто ця кнопка прямо тут
який говорить: "Крок протягом наступних виклик функції ", і так я можу піти
до такої міри були я, може бути, цікаво про щось.
Як, наприклад 164 візуалізації.
Тому в даний момент, це буде надана.
Я бачу цей шаблон є скомпільований шаблон.
Я бачу в цьому пункті я повинні мати двох студентів
і дві лекції.
А тут ще прототип ланцюга, що я мав на увазі.
Так що за замовчуванням, який поставляється поряд з тільки об'єкта
в JavaScript в цілому,
Він поставляється з двома рядка Значення конструктора.
А потім ті, які Я додав на себе
з addLecture, addStudent і потім властивості
які є унікальними для цього Примірник класу
як це було посилатися з нового ключового слова.
Так що давайте робити тільки один більш приклад на цей
а потім ми будемо крок до деяких більш цікаві речі
на стороні сервера.
Так що давайте йти вперед і відкрити цей останній приклад, який є -
давайте подивимося, де це код?
Я не знаю, де це пішло.
Добре, добре, ми могли б просто пропустити над цим кодом, то насправді -
ой тримайся, я думаю, що я пропустив таблиця стилів для коду.
Отже, давайте зробимо це трохи більше.
У цьому прикладі я показую трохи більше від налаштування
вгору по ланцюжку прототипів,
так налаштуванні спадкування з JavaScript.
Так що в цьому випадку ми маємо Каталог, який буде
щоб імовірно підтримувати кілька курсів.
І так Каталог має А.Н. методи addCourse.
Так він перевіряє, чи є курс що проходив у цей екземпляр
звичайно, як викликається з нового ключового слова.
Так що якщо ви намагаєтеся відправити
в чомусь іншому, він буде кричати на вас.
Метод візуалізації, який буде надавати кожному з курсів
шляхом складання його шаблон нижче.
І у нас є курс яких доступ
в цьому випадку базовим класом для індивідуальні курси відділ.
І замість того, щоб кожен
з курсу точкою Метод прототип точка
або майно, використовуючи розширити помічником у бібліотеці підкреслення
сортувати заходу розширити цей прототип з усіма
з цих властивостей, що є корисно, трохи легше читати.
А потім тут робити те, що відомо як установка
вгору по ланцюжку прототипів.
Так що це насправді небагато хитрим людям спочатку
і навіть до цих пір зробивши це на деякий час, це свого роду важко
щоб обернути навколо голови.
Але нехай це вас не лякає вас.
Так що я буду створенням нової -
зовсім новий клас заперечити,, CS.
І в конструкторі,
Я кажу, що курс застосувати цей аргументи.
Так аргументи спеціальний Значення Я думаю, ви могли б назвати його
в JavaScript, ключове слово, яке має всі
з усього, що це пройшов уздовж є аргументи
що функція доступні з аргументи виклику,
з ключовим словом аргументів.
Так як я дзвоню з курсом точка застосувати,
це поточний контекст з якою CS викликається.
Тому, коли я закликаю його новим це - це значення CS.
І я кажу називаємо це Метод Звичайно тут.
Ех шкода - називаємо це Звичайно метод прямо тут
але встановити значення цього щоб бути все, що значення
це прямо тут.
Таким чином, ключове слово застосувати дозволяє Вам роду зміни стану
це який є, як JQuery Допускається, щоб розібратися перемикача
з цього на вас, як Ви проходите
і зробити DOM елементи замість об'єкта JQuery.
Так що тепер я збираюся встановити тимчасова функція
яка буде захоплювати Прототип курсу.
І начебто встановити його зі своїм прототипом
а потім встановити прототип від функції об'єкта CS
в новий екземпляр цього.
Тому в основному я кажучи замість цього -
якщо я тут зробив CS Dot Прототип дорівнює новий курс.
Потім було б називаючи все
у цій функції конструктора,
, Якого не хочу обов'язково хотів.
Так що все, що я роблю це кшталт створення майже
як сурогатної функції, матиме прототип курси
на ньому і роду імітувати прототип -
Звичайно, але не роблячи все в конструкторі
і встановити, що з прототипом.
А потім я просто додавши так відділ
в цьому випадку комп'ютер Наука для об'єкта CS.
А то у мене свого роду Міст версія робити це.
Це не працює в IE9.
Так ось чому я хотів показати роду, як -
що це робить під капотом.
Але ви можете встановити його в тому же чином
де Екон дорівнює функцію Звичайно застосовувати ці аргументи
а потім кажуть Екон Dot прототипу дорівнює об'єкт точка CreateCourse
точка прототип.
Так що це створює новий об'єкт який є тільки прототипом
за курс, а потім встановити відділ там.
А тепер давайте просто піти встановити відладчик тут і натисніть на рахунку.
Там ми йдемо.
Так CS164 ми бачимо ланцюжок прототипів у нас є
властивості, які були встановити в конструкторі.
Так значення ці, які були встановлені а потім на ланцюжку прототипів
для об'єкта CS це було Відділ Інформатика встановити.
А потім на основний ланцюжок прототипів,
тоді маємо всі методи і властивості
які є унікальними для об'єкт Звичайно.
А то у нас базові об'єкти.
Так що свого роду швидкий Приклад ланцюжку прототипів.
І як ви можете бачити тут, там два значення у відділі.
Так що є відділ інформатики
а потім відділ немає в списку, який я сказав
як значення за замовчуванням тут.
Таким чином, ланцюжок прототипів насправді просто окремо
список посилань.
І як він намагається знайти нерухомість,
він почне в верхнє значення рівня.
Так що ж це визначено в Функція конструктора
а потім роду спуститися ланцюжок прототипів звідти.
Так, оскільки він знайшов, а значить -
якщо прямо тут, я кажу CS50 точка Департамент,
це скажу Computer Science.
Але якщо я говорю Var -
[Пауза]
Але якщо я говорю гуманітарні дорівнює новий курс
і тоді я кажу гуманітарні точка відділ,
Побачимося відділ немає в списку тому він відправився в перший -
Я можу подивитися на прототип Мережа тут насправді.
Так тривало перші ході об'єкт і побачив там нічого
на ланцюжку прототипів в цей рівень для відділу
або для значень відділу так то переходить на наступний рівень,
Звичайно, і зовнішній вигляд Нападник і знаходить його.
Так що просто ніби як спускається згори вниз
і це свого роду то, що унікальний
про JavaScript є що ви можете змінити будь-який
з цих значень в будь-який момент часу.
Так в конструкторі або в індивідуальний метод на об'єкті
якщо я хочу встановити це відділ до чогось нового,
або якщо я навіть хочу, щоб встановити будь-який з цих функцій
, Які вже існують
до чогось нового, Я вільний робити, що.
Тому в даний момент у мене є CS50 точку addLecture, виглядає так.
І якщо я хочу встановити його на CS50 addLecture просто дорівнює
на порожній функції.
Тоді зараз я бачу, що це просто повністю змінилася
які ви не в змозі зробити ще мови
де ви повинні суворіше Спадкування класів на основі
і все роду налаштувати.
JavaScript є дуже, дуже гнучка відносно, що.
Добре, давайте повернутися назад в слайдах.
Так що, якщо, наприклад, ви завжди хотів функцію
мати зокрема це значення, встановлене для нього.
Ви можете викликати функцію точка прив'язки
і встановити, що величина це повинно бути.
Ви можете думати про це як -
"Я намагаюся думати про добре реальний приклад світу, але ",
якщо ви хочете захистити ваш код
проти когось потенційно назвавши його зі значенням
що не буде цього.
Як, наприклад AJAX зворотного виклику, як перевищення або помилок.
Ті, як правило, не називають
з хорошим семантична Значення цього.
І ви, як: "Добре, я завжди хочу, щоб це значення
об'єкта курсу що я працюю з.
Або вид, який я роботи з в моєму коді
, Який представляє цей ДІМ вузол, ви можете встановити -
можна прив'язати контекст до цього а потім, коли це називається пізніше
на JQuery і він не має гарне співвідношення цього він буде дотримуватися
те, що ви обмежені його.
Тоді є виклик функції були Ви можете вказати контекст
і вказати будь-яку змінну кількість аргументів.
А тут ще функція застосовувати які можна передати
в контексті і то або масив
чи аргументи об'єкти, які Я згадав, як ви бачите там.
І аргументи в будь Функція, яку ви називаєте,
Ви можете просто ввести слово "аргументи"
і він матиме всі аргументи.
Він має «довжина» нерухомість
який є, як травень аргументи були насправді пройшло до того, що методи
так як в JavaScript Ви можете сортувати заходу
з номера змінних аргументів.
Це корисно для кажучи якщо це був один аргумент,
потім виконайте цей шлях коду.
Якщо це було два, ви, можливо, хочете слідувати іншим шляхом.
Це дозволяє вам мати дійсно динамічні інтерфейси для ваших методів.
Ви можете думати про що з JQuery
наприклад, коли у вас є долар точка або зв'язуються.
І це свого роду робить різні речі
щодо того, поставити вас один аргумент або два або три
або запустити його з функцією.
Він використовує аргументи майно
і аргументи довжина в більшості випадків
мати цю магію Функціональність трапитися.
Те, що ви не можете зробити з аргументи, це використовувати його так само,
за замовчуванням у вигляді масиву.
Так що ви можете сказати, аргументи три і встановити його на щось
як ви могли за допомогою призначення масив.
Ви можете використовувати - багато методів підкреслення
як для колекцій або для роботи з масивами,
Ви можете передавати дані через аргументи і це зрозумієте,
що Це аргументи Об'єкт і сортування
з подбати про це за вас.
Але якщо ви хочете використовувати Аргументи, які передаються
через функцію у вигляді масиву,
Ви можете використовувати підкреслення точка два масиву.
Один з числа допоміжних функцій
, Які будувати і підкреслення.