Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

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

Також, підтримуйте нас матеріально.

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 для зберігання значення числа π.

Нотатка:

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

Нотатка:

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

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

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

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

Нотатка:

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

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

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

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

Синтаксис

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' }