> В чем разница между статическими и нестатическими методами в классах JavaScript (JavaScript)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Lesta Games

Стек: JavaScript

> Пример ответа

Основное различие - в привязке к экземпляру класса. Статические методы (объявляются через ключевое слово static) принадлежат самому классу, а не его объектам. Они вызываются через имя класса: ClassName.method(). Нестатические методы (обычные методы) принадлежат каждому экземпляру и вызываются через объект: instance.method().

Статические методы не имеют доступа к this, ссылающемуся на экземпляр, и не могут обращаться к свойствам или методам конкретного объекта. Они часто используются для утилит, фабрик или операций, не зависящих от состояния экземпляра (например, Array.from() или Math.max()). Нестатические методы, наоборот, работают с данными конкретного объекта через this.

Пример:

JAVASCRIPT
class User {
constructor(name) {
this.name = name;
}
// нестатический метод - работает с экземпляром
greet() {
return `Привет, ${this.name}`;
}
// статический метод - не зависит от экземпляра
static isUser(obj) {
return obj instanceof User;
}
}
const user = new User('Анна');
console.log(user.greet()); // "Привет, Анна"
console.log(User.isUser(user)); // true
// console.log(User.greet()); // Ошибка — greet не статический
// console.log(user.isUser(user)); // Ошибка — isUser не доступен из экземпляра

Ключевое отличие в контексте: статические методы - для логики уровня класса, нестатические - для поведения объектов.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью