Skip to main content

Що таке конструктор класу?

Конструктор - це спеціальний метод класу в JavaScript, який викликається автоматично під час створення нового об'єкта через new. Він потрібен для ініціалізації об'єкта: присвоєння початкових значень властивостям, виклику методів тощо.

Розглянемо детальніше:


Що таке конструктор

Приклад:

javascript
class User { constructor(name, age) { this.name = name; // створюємо властивість об'єкта this.age = age; } sayHi() { console.log(`Hi, my name is ${this.name}, I am ${this.age}`); } } const user = new User('Oleh', 25); user.sayHi(); // Hi, my name is Oleh, I am 25

Метод constructor() спрацьовує в момент виклику new User(...) і використовується, щоб задати початковий стан об'єкта.


Як працює конструктор під капотом

Коли ти пишеш:

javascript
const user = new User('Oleh', 25);

відбувається таке:

  1. Створюється новий порожній об'єкт {}.
  2. Цей об'єкт зв'язується з прототипом User.prototype.
  3. Викликається constructor('Oleh', 25) всередині класу.
  4. Всередині конструктора виконується код, зазвичай this.name = ....
  5. Повертається створений об'єкт (this).

Тобто new сам створює об'єкт і повертає його, тобі не потрібно писати return.


Важливі особливості

1. Конструктор викликається автоматично при new

javascript
new User('Alex', 30); // викликає constructor()

2. У класу може бути тільки один конструктор

javascript
class Test { constructor() {} constructor() {} // Помилка: Duplicate constructor }

Якщо потрібна різна поведінка, можна використати параметри за умовчанням або умови всередині конструктора.


3. Конструктор може бути відсутнім

Якщо ти не визначаєш constructor, він створюється за умовчанням:

javascript
class User { sayHi() { console.log('Hi!'); } } const user = new User(); user.sayHi(); // Hi!

Під капотом браузер сам додасть:

javascript
constructor() {}

4. Конструктор у успадкованих класах

Коли клас успадковує інший через extends, у ньому потрібно викликати конструктор батьківського класу через super(), перш ніж використовувати this.

javascript
class Person { constructor(name) { this.name = name; } } class Student extends Person { constructor(name, group) { super(name); // викликаємо конструктор батьківського класу this.group = group; } } const s = new Student('Oleh', 'Frontend-2025'); console.log(s.name); // Oleh console.log(s.group); // Frontend-2025

Якщо не викликати super(), буде помилка: ReferenceError: Must call super constructor in derived class before accessing 'this'.


5. Конструктор може повертати інший об'єкт

Зазвичай конструктор не має return, але якщо явно повернути об'єкт, він замінить створений екземпляр:

javascript
class Example { constructor() { return { custom: true }; } } const obj = new Example(); console.log(obj); // { custom: true }

Якщо повернути не об'єкт (наприклад, число чи рядок), це ігнорується.


Приклад: клас з логікою в конструкторі

javascript
class Product { constructor(name, price) { this.name = name; this.price = price > 0 ? price : 0; // перевірка } getInfo() { return `${this.name}: $${this.price}`; } } const p1 = new Product('Shirt', 2500); const p2 = new Product('Coat', -100); console.log(p1.getInfo()); // Shirt: $2500 console.log(p2.getInfo()); // Coat: $0

Часто конструктор використовується для валідації та підготовки даних.


Коротке порівняння: constructor vs звичайні методи

Особливістьconstructor()Звичайні методи
Викликається автоматично при newТакНі
Може бути лише одинТакНі
Використовується для ініціалізації об'єктаТакІноді
Може повертати інший об'єктТакНі
Доступ через thisТакТак

Коротко:

Конструктор класу - це спеціальний метод, який викликається під час створення об'єкта через new, і використовується для ініціалізації властивостей та підготовки екземпляра.

Формула для запам'ятовування:

javascript
class X { constructor(...) { this.properties = ... } } const obj = new X(...);

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.