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
для зберігання значення числа π.
Нотатка: | На відміну від звичайних методів та властивостей, статичні не можуть бути перевизначені в підкласах за замовчуванням. Вони також не мають доступу до ключового слова |
Нотатка: | Хоча статичні методи та властивості є частиною мови програмування JavaScript, їх не завжди рекомендується використовувати. Вони можуть зробити код менш гнучким, особливо якщо є потреба в подальших змінах або розширеннях. Однак, якщо ви знаєте, що деяка функція або значення залишиться незмінним на рівні класу,
У цьому прикладі метод |
Нотатка: | Досвідчені розробники можуть ефективно комбінувати використання статичних методів та властивостей з динамічними. Це може бути корисно, наприклад, коли ви хочете мати загальні (статичні) налаштування для класу, які можна перевизначити на рівні екземпляра.
В цьому прикладі ми маємо статичну властивість |
Синтаксис
class ClassWithStatic {
static staticField;
static staticFieldWithInitializer = value;
static staticMethod() {
// …
}
}
Значення
Return
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
49 |
45 |
9 |
36 |
13 |
Переглядач | ||||
---|---|---|---|---|
49 |
49 |
45 |
9 |
Переглядач | ||
---|---|---|
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
В цьому прикладі у нас є клас 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' }