PassFront
  1. PassFront
  2. База знаний
  3. Функции

Когда появляется контекст у функции?

Функции

Контекст (`this`) у функции появляется в момент её вызова, а не при объявлении. До вызова у функции нет фиксированного this.

Главная идея

this — не свойство самой функции, а часть контекста конкретного вызова. Поэтому одна функция при разных вызовах имеет разный this.

function show() {
  return this;
}

const obj = { show };
obj.show();        // this = obj (определился при вызове)
const ref = obj.show;
ref();             // this = undefined (strict) — другой вызов

Когда и как определяется

В момент вызова по правилам:

  • вызов метода obj.fn() → this = obj;
  • new Fn() → this = новый объект;
  • fn.call/apply(ctx) → this = ctx;
  • обычный вызов fn() → undefined (strict) / globalThis.

Исключение — стрелки

Стрелочная функция не получает this при вызове: она захватывает его лексически в момент создания из внешнего окружения. Поэтому её this фиксирован и не зависит от способа вызова.

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

this появляется при вызове функции и определяется способом вызова (метод, new, call/apply/bind, обычный вызов). До вызова фиксированного контекста нет. Исключение — стрелки, берущие this лексически при создании.

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