constructor - специальный метод, служащий для создания и инициализации объектов, созданных с использованием class.Синтаксис
constructor([arguments]) { ... }
Описание
В классе может быть только один метод с именем "constructor". Если класс содержит более одного конструктора, будет сгенерировано исключение SyntaxError.
В конструкторе может быть использовано ключевое слово super, чтобы вызвать конструктор родительского класса.
Если вы не определили метод constructor, то будет использован конструктор по умолчанию.
Примеры
Использование метода constructor
Данный фрагмент кода взят из classes sample (live demo).
class Square extends Polygon {
constructor(length) {
// Здесь вызывается конструктор родительского класса,
// в который передается length в качестве аргументов,
// соответствующим полям width и height класса Polygon
super(length, length);
// Заметка: В производном классе, super() должен вызываться перед тем как
// вы сможете использовать 'this'. Иначе будет сгенерировано исключение reference error.
this.name = 'Square';
}
get area() {
return this.height * this.width;
}
set area(value) {
this.area = value;
}
}
Другой пример
Посмотрите на этот отрывок кода.
class Polygon {
constructor() {
this.name = "Polygon";
}
}
class Square extends Polygon {
constructor() {
super();
}
}
class Rectangle {}
Object.setPrototypeOf(Square.prototype, Rectangle.prototype);
console.log(Object.getPrototypeOf(Square.prototype) === Polygon.prototype); //false
console.log(Object.getPrototypeOf(Square.prototype) === Rectangle.prototype); //true
let newInstance = new Square();
console.log(newInstance.name); //Polygon
Здесь прототип Square класса изменен, но в то же время constructor предыдущего базового класса Polygon вызывается при создании нового экземпляра Square.
Constructors по умолчанию.
Если вы не определите метод constructor, будет использован constructor по умолчанию. Для базовых классов, constructor по умолчанию:
constructor() {}
Для производных классов, constructor по умолчанию:
constructor(...args) {
super(...args);
}
Спецификация
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Constructor Method' в этой спецификации. |
Стандарт | Изначальное определение. |
| ECMAScript (ECMA-262) Определение 'Constructor Method' в этой спецификации. |
Живой стандарт |
Совместимость с браузерами
| Компьютеры | Мобильные | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
constructor | Chrome
Полная поддержка
49
| Edge Полная поддержка 13 | Firefox Полная поддержка 45 | IE Нет поддержки Нет | Opera
Полная поддержка
36
| Safari Полная поддержка 9 | WebView Android
Полная поддержка
49
| Chrome Android
Полная поддержка
49
| Firefox Android Полная поддержка 45 | Opera Android
Полная поддержка
36
| Safari iOS Полная поддержка 9 | Samsung Internet Android
Полная поддержка
5.0
| nodejs
Полная поддержка
6.0.0
|
Легенда
- Полная поддержка
- Полная поддержка
- Нет поддержки
- Нет поддержки
- Смотрите замечания реализации.
- Смотрите замечания реализации.
- Пользователь должен сам включить эту возможность.
- Пользователь должен сам включить эту возможность.