--- title: Конструктор slug: Web/JavaScript/Reference/Classes/constructor tags: - Classes - ECMAScript6 - JavaScript translation_of: Web/JavaScript/Reference/Classes/constructor ---
{{jsSidebar("Classes")}}

Метод 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")}}

Див. також