Skip to main content

Як викликати статичний метод?

1. Синтаксис виклику статичного методу

javascript
class User { static sayHi() { console.log("Hi from the User class!"); } } // Правильно: User.sayHi(); // Hi from the User class! // Неправильно: const u = new User(); u.sayHi(); // TypeError: u.sayHi is not a function

Причина: статичні методи належать самому класу, а не об'єктам, створеним за допомогою new.


2. Приклад із параметрами

javascript
class MathUtils { static sum(a, b) { return a + b; } } console.log(MathUtils.sum(3, 5)); // 8

Тут MathUtils.sum() викликається безпосередньо через ім'я класу.


3. Статичні методи при успадкуванні

Якщо клас успадковує інший (extends), він теж отримує доступ до статичних методів батьківського класу:

javascript
class Animal { static info() { console.log("This is an animal"); } } class Dog extends Animal {} Dog.info(); // "This is an animal"

extends успадковує і звичайні, і статичні методи.


4. Виклик статичного методу всередині класу

Ти можеш викликати статичні методи:

  • або через ім'я класу (User.someMethod()),
  • або через this (усередині інших статичних методів),
  • але не з екземпляра.
javascript
class User { static hello() { console.log("Hi!"); } static greetAll() { this.hello(); // працює: `this` = сам клас } sayHi() { // Не можна викликати static звідси напряму // this.hello(); // TypeError User.hello(); // можна через ім'я класу } } const u = new User(); User.greetAll(); // Hi! u.sayHi(); // Hi!

5. Виклик статичного методу батьківського класу через super

Якщо є успадкування, можна викликати статичний метод батьківського класу за допомогою super:

javascript
class Animal { static describe() { console.log("Animal"); } } class Dog extends Animal { static describe() { super.describe(); // викликає Animal.describe() console.log("Dog"); } } Dog.describe(); // Animal // Dog

6. Приклад із реального життя: фабричний метод

javascript
class User { constructor(name, role) { this.name = name; this.role = role; } static createGuest() { return new User("Guest", "guest"); } } const guest = User.createGuest(); // виклик статичного методу console.log(guest); // { name: "Guest", role: "guest" }

Тут User.createGuest() повертає новий екземпляр, але сам метод належить класу, а не об'єкту.


Підсумок

Де викликаєтьсяПрикладПрацює?
На класіUser.sayHi()Так
На екземпляріnew User().sayHi()Ні
Усередині іншого staticthis.otherStatic()Так
Усередині звичайного методуClassName.staticMethod()Так
У нащадку через supersuper.staticMethod()Так

Коротко:

Статичні методи викликаються на самому класі, а не на його екземплярах:

javascript
ClassName.methodName();

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.