Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое класс в JS?
Класс в JavaScript — это синтаксический сахар для создания объектов и работы с прототипным наследованием. Это шаблон для создания объектов с методами и свойствами. Классы были введены в ES6 (2015) и значительно упростили объектно-ориентированный код.
Основной синтаксис
class User {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
return `Hello, my name is ${this.name}`;
}
birthday() {
this.age++;
}
}
const user = new User('Alice', 25);
console.log(user.greet()); // Hello, my name is Alice
user.birthday();
console.log(user.age); // 26
Ключевые концепции
1. Конструктор
Это специальный метод, который вызывается при создании нового объекта:
class Car {
constructor(brand, model) {
this.brand = brand;
this.model = model;
}
}
const car = new Car('Toyota', 'Camry');
2. Методы класса
class Calculator {
add(a, b) {
return a + b;
}
subtract(a, b) {
return a - b;
}
}
const calc = new Calculator();
console.log(calc.add(5, 3)); // 8
3. Наследование
Один класс может наследовать другой через ключевое слово extends:
class Animal {
constructor(name) {
this.name = name;
}
speak() {
return `${this.name} makes a sound`;
}
}
class Dog extends Animal {
speak() {
return `${this.name} barks`;
}
}
const dog = new Dog('Rex');
console.log(dog.speak()); // Rex barks
4. Super() для обращения к родительскому классу
class Bird extends Animal {
constructor(name, canFly) {
super(name);
this.canFly = canFly;
}
speak() {
return super.speak() + ' - chirp!';
}
}
Модификаторы доступа
Public (по умолчанию)
class Account {
constructor(balance) {
this.balance = balance; // public
}
}
Private (с # префиксом)
class Account {
#pin = 1234; // private
constructor(balance) {
this.balance = balance;
}
verifyPin(pin) {
return pin === this.#pin;
}
}
const acc = new Account(1000);
console.log(acc.balance); // 1000 (ok)
console.log(acc.#pin); // Error: Private field
Static методы
class MathUtils {
static add(a, b) {
return a + b;
}
}
MathUtils.add(5, 3); // 8
Getters и Setters
class Rectangle {
constructor(width, height) {
this._width = width;
this._height = height;
}
get area() {
return this._width * this._height;
}
set width(value) {
if (value <= 0) throw new Error('Width must be positive');
this._width = value;
}
}
const rect = new Rectangle(10, 5);
console.log(rect.area); // 50
rect.width = 20;
Классы vs Функции-конструкторы
Старый способ (ES5):
function User(name) {
this.name = name;
}
User.prototype.greet = function() {
return `Hello, ${this.name}`;
};
Современный способ (ES6+):
class User {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, ${this.name}`;
}
}
Резюме
- Класс — это шаблон для создания объектов
- Вводится через ключевое слово class
- Содержит конструктор, методы, свойства
- Поддерживает наследование через extends
- super() для вызова методов родителя
- Private поля с # для инкапсуляции
- Static методы относятся к самому классу
- Getters/Setters для контролируемого доступа
- Классы работают на прототипах под капотом