Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке клас у JavaScript?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Клас у JavaScript** - це синтаксичний спосіб опису об'єктів та їхньої поведінки (методів), введений у стандарті ES6 (ECMAScript 2015). Він є синтаксичним цукром над прототипним успадкуванням, яке існувало в мові споконвічно. **Ключове:** під капотом класи працюють через ті самі механізми прототипів, тобто клас, це синтаксичний спосіб опису прототипного успадкування, а не новий механізм ООП.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Клас у 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` | Керування доступом до властивостей | | `#` | Приватні поля та методи |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.