Статьи

Рассмотрение

Следующие пункты суммируют то, что вы должны были выучить, прочитав эту книгу (и исследуя примеры кода). Прочитайте каждое резюме, и если вы не понимаете, что говорится, вернитесь к теме в книге.

  • Объект состоит из именованных свойств, которые хранят значения.
  • Большинство всего в JavaScript может действовать как объект. Сложные значения являются объектами, а примитивные значения могут рассматриваться как объекты. Вот почему вы можете услышать, как люди говорят, что все в JavaScript — это объект.
  • Объекты создаются путем вызова функции конструктора с new ключевым словом или с использованием сокращенного литерального выражения.
  • Функции конструктора являются объектами (объектами Function() ), поэтому в JavaScript объекты создают объекты.
  • JavaScript предлагает девять собственных функций конструктора: Object() , Array() , String() , Number() , Boolean() , Function() , Date() , RegExp() и Error() . Конструкторы String() , Number() и Boolean() имеют двойное назначение: a) примитивные значения и b) обертки объектов при необходимости, так что примитивные значения могут действовать как объекты.
  • Значения null , undefined , "string" , 10 , true и false являются примитивными значениями, без сущности объекта, если не рассматриваются как объект.
  • Когда функции конструктора Object() , Array() , String() , Number() , Boolean() , Function() , Date() , RegExp() и Error() вызываются с использованием new ключевого слова, объект создан, который известен как «сложный объект» или «ссылочный объект».
  • "string" , 10 , true и false в своих примитивных формах не имеют качеств объекта, пока не будут использованы в качестве объектов; затем JavaScript за кулисами создает временные объекты-оболочки, чтобы такие значения могли действовать как объекты.
  • Примитивные значения сохраняются по значению, а при копировании буквально копируются. С другой стороны, значения сложных объектов сохраняются по ссылке, а при копировании — по ссылке.
  • Примитивные значения равны другим примитивным значениям, когда их значения равны, тогда как сложные объекты равны только тогда, когда они ссылаются на одно и то же значение. То есть комплексное значение равно другому комплексному значению, когда оба ссылаются на один и тот же объект.
  • Из-за природы сложных объектов и ссылок объекты JavaScript имеют динамические свойства.
  • JavaScript является изменяемым, что означает, что нативными объектами и пользовательскими свойствами объектов можно манипулировать в любое время.
  • Получение / установка / обновление свойств объектов осуществляется с помощью точечной или скобочной записи. Обозначение в скобках удобно, когда имя свойства объекта, которым манипулируют, имеет форму выражения (например, Array['prototype']['join'].apply() ).
  • При обращении к свойствам объекта используется цепочка поиска, которая сначала просматривает объект, на который ссылается свойство. Если свойство отсутствует, оно ищется в свойстве prototype функций конструктора. Если его там нет, поскольку в прототипе содержится значение объекта, а значение создается из конструктора Object() , это свойство Object.prototype свойстве prototype конструкторов Object() ( Object.prototype ). Если свойство там не найдено, то свойство определяется как undefined .
  • Цепочка поиска prototype — это то, как наследование (прототипное наследование) было разработано для реализации в JavaScript.
  • Из-за цепочки поиска свойств объекта (известной как наследование прототипа) все объекты наследуются от Object() просто потому, что свойство prototype само по себе является объектом Object() .
  • Функции JavaScript являются гражданами первого класса: функции — это объекты со свойствами и значениями.
  • Ключевое слово this , когда оно используется внутри функции, является общим способом ссылки на объект, содержащий функцию.
  • Значение this определяется во время выполнения на основе контекста, в котором вызывается функция.
  • Используемое в глобальной области видимости, ключевое слово this относится к глобальному объекту.
  • JavaScript использует функции как способ создания уникальной области видимости.
  • JavaScript обеспечивает глобальную область действия, и именно в этой области существует весь код JavaScript.
  • Функции (в частности, инкапсулированные функции) создают цепочку областей действия для разрешения поиска переменных.
  • Цепочка контекста устанавливается в зависимости от способа написания кода, а не от контекста, в котором вызывается функция. Это позволяет функции иметь доступ к области, в которой она была изначально написана, даже если функция вызывается из другого контекста. Этот результат известен как закрытие.
  • Выражения функций и переменные, объявленные внутри функции без использования var становятся глобальными свойствами. Однако операторы функции внутри области действия функции остаются определенными в той области, в которой они написаны.
  • Функции и переменные, объявленные (без var ) в глобальной области видимости, становятся свойствами глобального объекта.
  • Функции и переменные, объявленные (с помощью var ) в глобальной области видимости, становятся глобальными переменными.

Спасибо за чтение!