Обзор

15 января 2018

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

Объект состоит из именованных свойств, которые хранят значения. Большинство всего в JavaScript может действовать как объект. Сложные значения - это объекты, а примитивные значения можно рассматривать как объекты. Вот почему вы можете услышать, как люди говорят, что все в JavaScript является объектом. Объекты создаются путем вызова функции-конструктора с новым ключевым словом или с использованием сокращенного литерала. Конструкторские функции - это объекты (объекты 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 () вызывается с использованием нового ключевого слова, объект созданный, который известен как «сложный объект» или «ссылочный объект». «строка», «10», «истина» и «ложь» в их примитивных формах не имеют свойств объекта, пока они не будут использоваться как объекты; то JavaScript за кулисами создает временные объекты-обертки, чтобы такие значения могли действовать как объекты. Примитивные значения сохраняются по значению, а при копировании буквально копируются. Сложные значения объекта хранятся по ссылке, а при копировании копируются по ссылке. Примитивные значения равны другим примитивным значениям, когда их значения равны, тогда как сложные объекты равны только тогда, когда они ссылаются на одно и то же значение. То есть: комплексное значение равно другому сложному значению, когда оба относятся к одному и тому же объекту. Из-за характера сложных объектов и ссылок объекты JavaScript имеют динамические свойства. JavaScript изменен, что означает, что в любой момент можно манипулировать собственными объектами и определяемыми пользователем свойствами объектов. Получение настроек, обновляющих свойства объектов, осуществляется с помощью нотации обозначений точек или скобок. Обозначение скобок удобно, когда имя управляемого объекта объекта находится в форме выражения (например, Array ['prototype'] ['join']. Apply ()). При ссылке на свойства объекта используется цепочка поиска, чтобы сначала просмотреть объект, на который ссылалось свойство. Если свойства там нет, свойство ищет свойство прототипа функций конструктора. Если его там не найдено, поскольку прототип содержит значение объекта, а значение создается из конструктора Object (), свойство рассматривается в качестве свойства прототипа объекта Object () (Object.prototype). Если свойство там не найдено, свойство определяется как неопределенное. Цепочка поиска прототипа - это то, как наследование (так называемое прототипное наследование) было выполнено в JavaScript. Из-за цепочки поиска свойств объекта (или прототипального наследования) все объекты наследуются от Object () просто потому, что свойство prototype - это сам объект Object (). Функции JavaScript являются первоклассными гражданами: функции - это объекты со свойствами и значениями. Это ключевое слово, используемое внутри функции, является общим способом ссылки на объект, содержащий эту функцию. Значение этого определяется во время выполнения на основе контекста, в котором вызывается функция. Используемое в глобальной области действия, это ключевое слово относится к глобальному объекту. JavaScript использует функции как способ создания уникальной области. JavaScript предоставляет глобальную область видимости, и ее в этой области все JavaScript-код существует. Функции (в частности, инкапсулированные функции) создают цепочку областей для поиска переменных. Цепочка области действия настраивается на основе способа написания кода, а не обязательно контекста, в котором вызывается функция. Это позволяет функции иметь доступ к области, в которой она была первоначально написана, даже если функция вызывается из другого контекста. Этот результат известен как замыкание. Выражения функции и переменные, объявленные внутри функции без использования var, становятся глобальными. Тем не менее, операторы функций внутри области функций остаются определенными в области, в которой они записаны. Функции и переменные, объявленные (без var) в глобальной области, становятся свойствами глобального объекта. Функции и переменные, объявленные (с var) в глобальной области, становятся глобальными переменными.


Заключение

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