← Назад к вопросам

Что такое класс в JS?

1.2 Junior🔥 251 комментариев
#JavaScript Core

Комментарии (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 для контролируемого доступа
  • Классы работают на прототипах под капотом
Что такое класс в JS? | PrepBro