Constructor

Конструктор – это функция, предназначенная для инициализации вновь созданных объектов.

Конструкторы вызываются с помощью ключевого слова new. Применение ключевого слова new при вызове конструктора автоматически создает новый объект, поэтому конструктору остается только инициализировать свойства этого нового объекта. Важной особенностью вызова конструктора является использование свойства prototype конструктора в качестве прототипа нового объекта. Это означает, что все объекты, созданные с помощью одного конструктора, наследуют один и тот же объект-прототип и, соответственно, являются членами одного и того же класса.

Конструктор - это функции, задачей которых является заполнить пустой объект свойствами и методами. Т.е. это функция, которая конфигурирует объект для дальнейшего использования.

Функция-конструктор - это эквивалент классам в других языках программирования. (?)

Например:

var point = new Object();

В JS конструкторы — это всего лишь функции, которые, так уж получилось, были вызваны с операцией newперед ними. Они ни связаны с классами, ни создают экземпляров классов. Они — даже не особые типы функций. Они — всего лишь обычные функции, которые, по своей сути, "украдены" операцией newпри их вызове.

Например, функцияNumber(..)действует как конструктор, цитируя спецификацию ES5.1:

15.7.2 Конструктор Number

Когда Number вызывается как часть выражения new, оно является конструктором: оно инициализирует только что созданный объект.

Так что, практически любая старенькая функция, включая встроенные объектные функции, такие какNumber(..), могут вызываться сnewперед ними и это превратит такой вызов функции в вызов конструктора. Это важное, но едва уловимое различие: нет такой вещи как "функции-конструкторы", а скорее есть вызовы, конструирующие из функций.


Когда функция вызывается с указанием перед нейnew, также известный как вызов конструктора, автоматически выполняются следующие вещи:

(1) Создается новенький объект (т.е. конструируется) прямо из воздуха

var instance = {};

(2) Только что сконструированный объект связывается с [[Прототипом]]

instance.[[Прототипом]] = FnClass.prototype;
// or
instance.__proto__ = FnClass.prototype;

(3) Только что сконструированный объект устанавливается как привязка thisдля этого вызова функции

(4) За исключением тех случаев, когда функция возвращает свой собственный альтернативный объект, вызов функции с newавтоматически вернет только что сконструированный объект.

results matching ""

    No results matching ""