Перейти к содержимому

40. Статические методы и свойства

JavaScript: Мозги. Урок 3: Статические методы и свойства

Заголовок раздела «JavaScript: Мозги. Урок 3: Статические методы и свойства»

Иллюстрация к уроку Статические методы и свойства - это мощный инструмент в JavaScript, позволяющий привязывать функциональность непосредственно к классу, а не к его экземплярам. Они помогают организовать код и избежать создания лишних объектов. Давайте разберемся, как это работает!

Представьте себе класс как чертеж для создания объектов. Обычные методы и свойства принадлежат каждому созданному объекту (экземпляру) этого класса. А статические методы и свойства принадлежат самому классу. Чтобы их вызвать, не нужно создавать экземпляр класса. Они вызываются напрямую через имя класса.

Практический пример: Статические свойства

Заголовок раздела «Практический пример: Статические свойства»
class Dog {
static dogCount = 0; // Статическое свойство - количество собак
constructor(name) {
this.name = name;
Dog.dogCount++; // Увеличиваем счетчик при создании новой собаки
}
static getDogCount() { // Статический метод - возвращает количество собак
return Dog.dogCount;
}
}
const dog1 = new Dog("Бобик");
const dog2 = new Dog("Рекс");
console.log(Dog.dogCount); // Вывод: 2 (доступ к статическому свойству)
console.log(Dog.getDogCount()); // Вывод: 2 (вызов статического метода)

В этом примере dogCount - это статическое свойство класса Dog. Оно хранит общее количество созданных объектов Dog. Мы не можем получить доступ к dogCount через dog1.dogCount или dog2.dogCount. Мы обращаемся к нему только через Dog.dogCount. Аналогично, getDogCount() - статический метод, который возвращает значение dogCount.

class MathHelper {
static PI = 3.14159;
static calculateCircleArea(radius) {
return MathHelper.PI * radius * radius;
}
}
const area = MathHelper.calculateCircleArea(5);
console.log(area); // Вывод: 78.53975

Здесь calculateCircleArea - это статический метод, который вычисляет площадь круга. Мы не создаем экземпляр MathHelper, чтобы использовать этот метод. Мы вызываем его напрямую через MathHelper.calculateCircleArea(5). PI - статическая константа.

Статические методы и свойства часто используются в библиотеках и фреймворках для:

  • Создания утилитных функций: Например, класс Math в JavaScript предоставляет множество статических методов (например, Math.random(), Math.floor()) для выполнения математических операций.
  • Реализации паттернов проектирования: Например, паттерн Singleton (одиночка) часто реализуется с использованием статического метода для получения единственного экземпляра класса.
  • Управления конфигурацией: Статические свойства могут использоваться для хранения глобальных настроек приложения.
  • React: В React компонентах статические методы часто используются для определения propTypes или defaultProps.
  • Статические методы и свойства принадлежат классу, а не его экземплярам.
  • Для доступа к ним используется имя класса (например, ClassName.staticMethod()).
  • Они полезны для создания утилитных функций, управления конфигурацией и реализации паттернов проектирования.
  • Статические методы не имеют доступа к this, потому что this относится к экземпляру класса.
  • Они могут обращаться к другим статическим свойствам и методам того же класса.