update classes

This commit is contained in:
2025-03-05 15:12:57 +03:00
parent 31caa0e6de
commit 8b08f95ce0
12 changed files with 421 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
---
sidebar_position: 1
---
# Класс: базовый синтаксис
MyClass технически является функцией (той, которую мы определяем как constructor), в то время как методы, геттеры и сеттеры записываются в MyClass.prototype.
## Синтаксис «class»
```js
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` были только методы.
```js
class User {
name = "Аноним";
sayHi() {
alert(`Привет, ${this.name}!`);
}
}
new User().sayHi();
```
Свойство name не устанавливается в `User.prototype`. Вместо этого оно создаётся оператором `new` перед запуском конструктора, это именно свойство объекта.