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

Что такое контекст?

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

Контекст (context) в JavaScript — это объект, на который ссылается this во время выполнения функции. Он определяется тем, как функция вызвана.

Не путать с областью видимости

  • Область видимости (scope) — где доступны переменные (определяется при объявлении).
  • Контекст (this) — какой объект «владеет» вызовом (определяется при вызове).

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

const user = {
  name: 'Ann',
  greet() {
    return this.name; // this = user
  },
};

user.greet();          // 'Ann' — контекст user
const fn = user.greet;
fn();                  // undefined (strict) — контекст потерян

Управление контекстом

  • call(obj, ...args) — вызвать с заданным this.
  • apply(obj, [args]) — то же, аргументы массивом.
  • bind(obj) — вернуть функцию с зафиксированным this.
  • Стрелочная функция — берёт контекст из внешнего окружения.
greet.call({ name: 'Bob' }); // 'Bob'

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

Контекст — это this, объект-владелец вызова, определяемый способом вызова (метод, new, call/apply/bind, стрелка). Отличается от области видимости, которая про доступность переменных при объявлении.

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