JavaRush /Курси /Frontend SELF UA /Статичні методи

Статичні методи

Frontend SELF UA
Рівень 40 , Лекція 1
Відкрита

8.1 Оголошення статичних методів

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

Статичні методи оголошуються з використанням ключового слова static перед визначенням методу в тілі класу.

Приклад:

  • Методи add і multiply оголошені як статичні з використанням ключового слова static
  • Ці методи викликаються безпосередньо на класі MathHelper, а не на його екземплярах
JavaScript
    
      class MathHelper {
        static add(a, b) {
          return a + b;
        }

        static multiply(a, b) {
          return a * b;
        }
      }

      console.log(MathHelper.add(5, 3)); // 8
      console.log(MathHelper.multiply(5, 3)); // 15
    
  

8.2 Використання статичних методів

Статичні методи корисні в наступних сценаріях:

  1. Допоміжні функції: статичні методи можуть бути використані для створення утилітарних функцій, які виконують операції, пов'язані з класом.
  2. Фабричні методи: статичні методи можуть використовуватися для створення екземплярів класу з конкретною логікою.
  3. Обробка даних: статичні методи можуть використовуватися для обробки даних, пов'язаних з класом, але не потребують створення екземплярів класу.

Приклад допоміжних функцій:

  • Клас StringUtil містить статичні методи capitalize і reverse, які працюють з рядками
  • Ці методи викликаються безпосередньо на класі StringUtil
JavaScript
    
      class StringUtil {
        static capitalize(str) {
          return str.charAt(0).toUpperCase() + str.slice(1);
        }

        static reverse(str) {
          return str.split('').reverse().join('');
        }
      }

      console.log(StringUtil.capitalize('hello')); // "Hello"
      console.log(StringUtil.reverse('hello')); // "olleh"
    
  

Приклад фабричного методу:

Статичний метод fromObject створює екземпляр класу Car з об'єкта даних.

JavaScript
    
      class Car {
        constructor(brand, model) {
          this.brand = brand;
          this.model = model;
        }

        static fromObject(obj) {
          return new Car(obj.brand, obj.model);
        }
      }

      const carData = { brand: 'Toyota', model: 'Camry' };
      const car = Car.fromObject(carData);

      console.log(car.brand); // "Toyota"
      console.log(car.model); // "Camry"
    
  

8.3 Статичні методи та спадкування

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

Приклад спадкування статичних методів:

  • Статичний метод identify визначений у класі Animal і перевизначений у класі Dog
  • Викликається метод identify на обох класах
JavaScript
    
      class Animal {
        static identify() {
          return 'This is an animal';
        }
      }

      class Dog extends Animal {
        static identify() {
          return 'This is a dog';
        }
      }

      console.log(Animal.identify()); // "This is an animal"
      console.log(Dog.identify()); // "This is a dog"
    
  

8.4 Доступ до статичних методів всередині інших методів

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

Приклад:

Статичний метод calculateArea викликається всередині іншого статичного методу describeCircle з використанням ключового слова this, яке в цьому контексті посилається на сам клас Geometry.

JavaScript
    
      class Geometry {
        static calculateArea(radius) {
          return Math.PI * radius * radius;
        }

        static describeCircle(radius) {
          const area = this.calculateArea(radius);
          return `A circle with radius ${radius} has an area of ${area.toFixed(2)}.`;
        }
      }

      console.log(Geometry.describeCircle(5)); // "A circle with radius 5 has an area of 78.54."
    
  

8.5 Статичні методи та екземпляри класу

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

Приклад:

Статичний метод add викликається на класі Calculator, а не на його екземплярі calc.

JavaScript
    
      class Calculator {
        static add(a, b) {
          return a + b;
        }
      }

      const calc = new Calculator();
      console.log(Calculator.add(3, 4)); // 7

      console.log(calc.add(3, 4)); // Помилка: calc.add не є функцією
    
  
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ