Files
frontend-docs/docs/javascript/06-classes/01-class-base.md
2025-03-05 15:12:57 +03:00

2.6 KiB
Raw Blame History

sidebar_position
sidebar_position
1

Класс: базовый синтаксис

MyClass технически является функцией (той, которую мы определяем как constructor), в то время как методы, геттеры и сеттеры записываются в MyClass.prototype.

Синтаксис «class»

class MyClass {
  // методы класса
  constructor() { ... }
  method1() { ... }
  method2() { ... }
  method3() { ... }
  ...
}

Затем используйте вызов new MyClass() для создания нового объекта со всеми перечисленными методами.

При этом автоматически вызывается метод constructor(), в нём мы можем инициализировать объект.

💥 Методы в классе не разделяются запятой

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

В JavaScript класс это разновидность функции.

Вот что на самом деле делает конструкция class User {...}:

  1. Создаёт функцию с именем User, которая становится результатом объявления класса. Код функции берётся из метода constructor (она будет пустой, если такого метода нет).
  2. Сохраняет все методы, такие как sayHi, в User.prototype.

При вызове метода объекта new User он будет взят из прототипа, как описано в главе F.prototype. Таким образом, объекты new User имеют доступ к методам класса.

Геттеры/сеттеры, другие сокращения

Как и в литеральных объектах, в классах можно объявлять вычисляемые свойства, геттеры/сеттеры и т.д. При объявлении класса геттеры/сеттеры создаются на User.prototype

Свойства классов

В приведённом выше примере у класса User были только методы.

class User {
  name = "Аноним";

  sayHi() {
    alert(`Привет, ${this.name}!`);
  }
}
new User().sayHi();

Свойство name не устанавливается в User.prototype. Вместо этого оно создаётся оператором new перед запуском конструктора, это именно свойство объекта.