JS властивість Class.static


Загальний опис

Static у JavaScript є ключовим словом, що визначає статичні методи та властивості для класів. Ці елементи стають доступними на рівні самого класу, а не на рівні його екземплярів.

Static використовується для додавання методів і властивостей, які мають відношення безпосередньо до самого класу, а не до об'єктів, створених на його основі. Це може бути корисним, наприклад, для створення утилітарних функцій або констант, які не повинні змінюватися між екземплярами класу.

Статичні методи та властивості класу можна викликати без створення екземпляра класу. Вони часто використовуються у таких ситуаціях, де метод або властивість не використовує або не змінює дані екземпляра. Наприклад, якщо ви хочете мати функцію, що порівнює два об'єкта класу, вам може знадобитися статичний метод.

Використання статичних методів. При використанні статичного методу вам не потрібно створювати екземпляр класу. Ви просто викликаєте метод безпосередньо з класу.

class MathUtil {
   static sum(a, b) {
       return a + b;
   }
}
// Виклик статичного методу
console.log(MathUtil.sum(1, 2)); // 3

У цьому прикладі ми створили статичний метод sum для класу MathUtil. Цей метод може бути викликаним без створення екземпляра класу.

Використання статичних властивостей. Статичні властивості можна використовувати для зберігання констант або інших значень, які пов'язані з класом, але не з його екземплярами.

class Circle {
   static PI = 3.14159;
}
console.log(Circle.PI); // 3.14159

У цьому прикладі ми використовуємо статичну властивість PI для зберігання значення числа π.

автор: Bond

Нотатка

На відміну від звичайних методів та властивостей, статичні не можуть бути перевизначені в підкласах за замовчуванням. Вони також не мають доступу до ключового слова this всередині своєї області видимості, так як this зазвичай вказує на екземпляр класу, а статичні методи та властивості не пов'язані з конкретним екземпляром.

автор: Bond
Нотатка

Хоча статичні методи та властивості є частиною мови програмування JavaScript, їх не завжди рекомендується використовувати. Вони можуть зробити код менш гнучким, особливо якщо є потреба в подальших змінах або розширеннях.

Однак, якщо ви знаєте, що деяка функція або значення залишиться незмінним на рівні класу, static може бути корисним інструментом для оптимізації вашого коду. Якщо у вас є клас, який виконує певний набір операцій і не потребує зберігання стану, такі як математичні операції, тоді статичні методи можуть бути ідеальним вибором.

class MathUtil {
    static sum(a, b) {
        return a + b;
    }
}

У цьому прикладі метод sum не залежить від якогось внутрішнього стану класу, тому він ідеально підходить для використання як статичний.

автор: Bond
Нотатка

Досвідчені розробники можуть ефективно комбінувати використання статичних методів та властивостей з динамічними. Це може бути корисно, наприклад, коли ви хочете мати загальні (статичні) налаштування для класу, які можна перевизначити на рівні екземпляра.

class ConfigurableComponent {
   static defaultConfig = {
       color: 'blue',
       size: 'medium'
   };

   constructor(config = {}) {
       this.config = {...ConfigurableComponent.defaultConfig, ...config};
   }
}

В цьому прикладі ми маємо статичну властивість defaultConfig та можемо її перевизначити для конкретного екземпляра, коли створюємо його.

автор: Bond

Синтаксис

class ClassWithStatic {
  static staticField;
  static staticFieldWithInitializer = value;
  static staticMethod() {
    // …
  }
}

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
49 45 9 36 13
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
49 49 45 9
Підтримка: серверні переглядачі
Переглядач Node.js Deno
6.0.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми маємо клас MathUtils, який містить статичний метод square. Метод приймає число як аргумент і повертає його квадрат. Оскільки це статичний метод, нам не потрібно створювати екземпляр класу для його використання. Ми можемо просто викликати метод, використовуючи назву класу: MathUtils.square(4).

// Оголошення класу MathUtils зі статичним методом square
class MathUtils {
  static square(x) {
    return x * x;
  }
}

// Використання статичного методу без створення екземпляра класу
console.log(MathUtils.square(4)); // Виведе 16
автор: Bond

В цьому прикладі у нас є клас Config зі статичною властивістю defaultSettings. Ця властивість визначає деякі налаштування за замовчуванням. Конструктор класу приймає об'єкт customSettings, який може перезаписувати налаштування за замовчуванням. Для цього ми використовуємо спред-оператор ... для злиття defaultSettings і customSettings. Таким чином, при створенні нового екземпляра класу, ви можете легко вказати свої налаштування, які будуть об'єднані із налаштуваннями за замовчуванням.

// Оголошення класу Config зі статичною властивістю defaultSettings
class Config {
  static defaultSettings = {
    language: "en",
    theme: "light",
  };

  constructor(customSettings) {
    this.settings = { ...Config.defaultSettings, ...customSettings };
  }
}

// Створення нового екземпляра класу з власними налаштуваннями
const myConfig = new Config({ theme: "dark" });

// Виведення об'єкта з налаштуваннями
console.log(myConfig.settings); // Виведе { language: 'en', theme: 'dark' }
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід