[ITEM 3] QUESTION: Що таке static у класах?
Ключове слово static у класах JavaScript відкриває можливості для створення статичних властивостей і методів, які належать не конкретному екземпляру об'єкта, а самому класу загалом. Оголошення статического методу виглядає як static method() {}, а статичне поле задається через конструкцію виду static property = value. Головна відмінність статичних членів від звичайних полягає в способі їх виклику: до них звертаються виключно через ім'я класу, наприклад ClassName.method(), а не через створений об'єктний екземпляр.
Більше того, спроба викликати статичний метод або прочитати статичну властивість через змінну, що зберігає екземпляр класу, призведе до помилки, оскільки ці сутності просто не потрапляють у прототипний ланцюжок об'єктів. Пам'ять під статичні члени виділяється єдиноразово під час завантаження класу в пам'ять, і вони існують незалежно від того, чи було створено хоча б один додаток або екземпляр цього класу.
На практиці статичні методи і властивості найчастіше застосовуються для реалізації різноманітних утилітних функцій, допоміжних алгоритмів, фабричних методів для створення об'єктів, а також для зберігання констант або загального стану, який має бути єдиним для всіх майбутніх екземплярів даного класу. Наприклад, клас Database може містити статичний метод Database.connect(), який повертає єдине підключення до бази даних за паттерном Сінглтон.
Використання static дозволяє логічно ізолювати логіку, яка не залежить від даних конкретного об'єкта, роблячи код чистішим, структурованішим та професійнішим. Розробники можуть легко групувати допоміжні інструменти прямо всередині бізнес-класів, не створюючи для цього окремі файли з розрізненими функціями.