Метод constructor
— це особливий метод, призначений для створення й започаткування (ініціалізації) новоствореного примірника класу.
Синтаксис
constructor([аргументи]) { … }
Опис
Клас може мати лише один метод з іменем «constructor». Спроба оголосити декілька методів «constructor» для одного класу матиме наслідком помилку SyntaxError
.
Метод constructor
може звернутися до однойменного методу батьківського класу (надкласу) через ключове слово
.super
За відсутності оголошеного методу constructor
буде використано типовий започаткувач (конструктор).
Приклади
Використання методу constructor
Цей шмат коду взято з classes sample (переглянути наживо):
class Square extends Polygon { constructor(length) { // Наступний рядок здійснює виклик успадкованого від Polygon // конструктора, передаючи до нього власні параметри. super(length, length); // Завважте, що в класах-нащадках виклик super() завжди має передувати // найпершому звертанню до this. Інакше матимете помилку. 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(); } } let newInstance = new Square(); console.log(newInstance.name); // виводить "Polygon"
Типові конструктори
Якщо метод constructor
не оголошено, буде використано типовий конструктор. Для первинного класу (що не успадковує інших) то є метод з порожнім тілом:
constructor() {}
Натомість для вторинного класу (що успадковує якийсь інший клас) типовим конструктором є такий:
constructor(...args) { super(...args); }
Специфікації
Специфікація | Статус | Коментар |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Constructor Method' in that specification. |
Standard | Первинне визначення. |
ECMAScript Latest Draft (ECMA-262) The definition of 'Constructor Method' in that specification. |
Draft |
Підтримка веб-переглядачами
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Basic support | Chrome
Full support
49
| Edge Full support 13 | Firefox Full support 45 | IE No support No | Opera Full support 36 | Safari Full support 9 | WebView Android ? | Chrome Android Full support Yes | Edge Mobile Full support 13 | Firefox Android Full support 45 | Opera Android ? | Safari iOS Full support 9 | Samsung Internet Android Full support Yes | nodejs
Full support
6.0.0
|
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- See implementation notes.
- See implementation notes.
- User must explicitly enable this feature.
- User must explicitly enable this feature.