>> Ладно, сегодня, Я собираюсь говорить
о 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
например, когда у вас есть доллар точка или связываются.
И это своего рода делает разные вещи
относительно того, поставить вас один аргумент или два или три
или запустить его с функцией.
Он использует аргументы имущество
и аргументы длина в большинстве случаев
иметь эту магию Функциональность случиться.
То, что вы не можете сделать с аргументы, это использовать его так же,
по умолчанию в виде массива.
Так что вы можете сказать, аргументы три и установить его на что-то
как вы могли с помощью назначение массив.
Вы можете использовать - много методов подчеркивания
как для коллекций или для работы с массивами,
Вы можете передавать данные через аргументы и это поймете,
что Это аргументы Объект и сортировки
из позаботиться об этом за вас.
Но если вы хотите использовать Аргументы, которые передаются
через функцию в виде массива,
Вы можете использовать подчеркивания точка два массива.
Один из числа вспомогательных функций
, которые строить и подчеркивания.