update classes
This commit is contained in:
46
docs/javascript/06-classes/03-static-option-methods.md
Normal file
46
docs/javascript/06-classes/03-static-option-methods.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Статические свойства и методы
|
||||
Статические методы используются для функциональности, принадлежат классу «в целом», а не относятся к конкретному объекту класса.
|
||||
|
||||
Например, метод для сравнения двух статей Article.compare(article1, article2) или фабричный метод Article.createTodays().
|
||||
|
||||
В объявлении класса они помечаются ключевым словом static.
|
||||
|
||||
Статические свойства используются в тех случаях, когда мы хотели бы сохранить данные на уровне класса, а не какого-то одного объекта.
|
||||
|
||||
```js
|
||||
class MyClass {
|
||||
static property = ...;
|
||||
|
||||
static method() {
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
Технически, статическое объявление – это то же самое, что и присвоение классу:
|
||||
```
|
||||
MyClass.property = ...
|
||||
MyClass.method = ...
|
||||
```
|
||||
Статические свойства и методы наследуются.
|
||||
|
||||
Для class B extends A прототип класса B указывает на A: B.[[Prototype]] = A. Таким образом, если поле не найдено в B, поиск продолжается в A.
|
||||
|
||||
## Статические свойства
|
||||
Статические свойства также возможны, они выглядят как свойства класса, но с static в начале:
|
||||
```js
|
||||
class Article {
|
||||
static publisher = "Илья Кантор";
|
||||
}
|
||||
alert( Article.publisher ); // Илья Кантор
|
||||
```
|
||||
Это то же самое, что и прямое присваивание Article:
|
||||
```
|
||||
Article.publisher = "Илья Кантор";
|
||||
```
|
||||
|
||||
## Наследование статических свойств и методов
|
||||
Статические свойства и методы наследуются.
|
||||
Reference in New Issue
Block a user