Files
frontend-docs/docs/javascript/06-classes/01-class-base.md
2025-03-25 16:40:25 +03:00

53 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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` перед запуском конструктора, это именно свойство объекта.
🚀 **Источник: [https://learn.javascript.ru/class](https://learn.javascript.ru/class)**