Skip to main content

Що таке клас у JavaScript?

Клас у JavaScript - це синтаксичний спосіб опису об'єктів та їхньої поведінки (методів), введений у стандарті ES6 (ECMAScript 2015). Він є синтаксичним цукром над прототипним успадкуванням, яке існувало в мові споконвічно. Тобто під капотом класи працюють через ті самі механізми прототипів.


Основні особливості класу

  1. Оголошення класу:
javascript
class Person { constructor(name, age) { this.name = name; this.age = age; } greet() { console.log(`Hi, my name is ${this.name}`); } } const user = new Person("Alice", 25); user.greet(); // Hi, my name is Alice
  • Метод constructor() викликається під час створення нового екземпляра (new Person()).
  • this всередині конструктора посилається на об'єкт, що створюється.

Успадкування класів

Класи можуть успадковувати властивості й методи інших класів за допомогою ключового слова extends.

javascript
class Animal { speak() { console.log("The animal makes a sound"); } } class Dog extends Animal { speak() { console.log("The dog barks"); } } const dog = new Dog(); dog.speak(); // The dog barks

Якщо потрібно викликати метод батьківського класу, використовується super():

javascript
class Dog extends Animal { speak() { super.speak(); // викликає метод батьківського класу console.log("Woof woof"); } }

Статичні методи та властивості

Іноді метод стосується не конкретного екземпляра, а самого класу:

javascript
class MathUtils { static square(n) { return n * n; } } console.log(MathUtils.square(5)); // 25

Статичні методи не можна викликати через екземпляр (new MathUtils()), лише через сам клас.


Геттери та сеттери

Дозволяють керувати доступом до властивостей класу:

javascript
class User { constructor(name) { this._name = name; } get name() { return this._name.toUpperCase(); } set name(value) { this._name = value.trim(); } } const u = new User(" Alice "); console.log(u.name); // ALICE

Приватні поля та методи

Синтаксис із символом решітки # робить властивість або метод недоступними ззовні:

javascript
class Account { #balance = 0; deposit(amount) { this.#balance += amount; } getBalance() { return this.#balance; } } const acc = new Account(); acc.deposit(100); console.log(acc.getBalance()); // 100 // acc.#balance - Помилка: приватна властивість

Підсумок

ОсобливістьОпис
constructor()Ініціалізація екземпляра
extendsУспадкування
superВиклик конструктора або методу батьківського класу
staticМетоди класу, а не екземпляра
get / setКерування доступом до властивостей
#Приватні поля та методи

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

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

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