--- title: Конструктор slug: Web/JavaScript/Reference/Classes/constructor tags: - Classes - ECMAScript6 - JavaScript translation_of: Web/JavaScript/Reference/Classes/constructor ---
Метод constructor
— це особливий метод, призначений для створення й започаткування (ініціалізації) новоствореного примірника класу.
constructor([аргументи]) { … }
Клас може мати лише один метод з іменем «constructor». Спроба оголосити декілька методів «constructor» для одного класу матиме наслідком помилку {{jsxref("Global_Objects/SyntaxError", "SyntaxError")}}.
Метод constructor
може звернутися до однойменного методу батьківського класу (надкласу) через ключове слово {{jsxref("Operators/super", "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); }
Специфікація | Статус | Коментар |
---|---|---|
{{SpecName('ES6', '#sec-static-semantics-constructormethod', 'Constructor Method')}} | {{Spec2('ES6')}} | Первинне визначення. |
{{SpecName('ESDraft', '#sec-static-semantics-constructormethod', 'Constructor Method')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.classes.constructor")}}