Поиск…


замечания

Конструкторские функции на самом деле являются просто регулярными функциями, в них нет ничего особенного. Это только new ключевое слово вызывает особое поведение, показанное в приведенных выше примерах. Функции конструктора по-прежнему можно вызвать как регулярную функцию, и в этом случае вам нужно будет привязать this значение явно.

Объявление функции-конструктора

Функции конструктора - это функции, предназначенные для создания нового объекта. Внутри функции-конструктора ключевое слово this относится к вновь созданному объекту, которому могут быть присвоены значения. Функции конструктора автоматически возвращают этот новый объект.

function Cat(name) {
  this.name = name;
  this.sound = "Meow";
}

Функции конструктора вызываются с помощью new ключевого слова:

let cat = new Cat("Tom");
cat.sound; // Returns "Meow"

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

Cat.prototype.speak = function() {
  console.log(this.sound);
}

cat.speak(); // Outputs "Meow" to the console

Объекты, созданные конструкторскими функциями, также имеют специальное свойство на свой прототип, называемый constructor , который указывает на функцию, используемую для их создания:

cat.constructor // Returns the `Cat` function

Объекты, созданные конструкторскими функциями, также считаются «экземплярами» функции-конструктора оператором instanceof :

cat instanceof Cat // Returns "true"


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow