PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

Где доступен контекст?

Объекты и прототипы

Контекст (`this`) доступен внутри функции во время её вызова и определяется способом вызова. У стрелочных функций контекст берётся из внешнего окружения.

Где доступен this

this доступен внутри тела функции и указывает на объект контекста вызова:

const obj = {
  name: 'Ann',
  greet() {
    return this.name; // this доступен, = obj
  },
};
obj.greet(); // 'Ann'

Зависит от способа вызова

  • Метод obj.fn() → this = obj.
  • Обычный вызов fn() → undefined (strict) / globalThis.
  • new new Fn() → новый объект.
  • call/apply/bind → заданный.
  • Стрелка → лексический (из внешнего окружения).

Глобальный контекст

Вне функций this в браузере (нестрогий режим) = window; в модуле — undefined.

Где this недоступен как ожидается

  • Потерянный контекст (метод как колбэк без bind).
  • Стрелка — берёт внешний this, свой не имеет.
setTimeout(obj.greet, 100);    // this потерян
setTimeout(() => obj.greet()); // this сохранён

Коротко для собеседования

Контекст (this) доступен внутри вызываемой функции и определяется способом вызова: метод → объект, new → новый объект, call/apply/bind → заданный, обычный вызов → undefined (strict). Стрелка берёт this лексически из окружения. При передаче метода как колбэка контекст теряется.

Другие вопросы раздела