--- 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")}}