JavaRush /Курсы /Модуль 1: Web Core /Статические методы

Статические методы

Модуль 1: Web Core
20 уровень , 7 лекция
Открыта

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 не является функцией
    
  
1
Задача
Модуль 1: Web Core, 20 уровень, 7 лекция
Недоступна
Статические методы
Статические методы
1
Задача
Модуль 1: Web Core, 20 уровень, 7 лекция
Недоступна
Фабричный метод User
Фабричный метод User
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ