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

Как настроить контекст?

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

Контекст (`this`) настраивают явной привязкой — методами `call`, `apply`, `bind` — или лексически через стрелочные функции.

Способы настройки контекста

call — вызвать с заданным this (аргументы списком)

greet.call(user, 'Привет');

apply — то же, аргументы массивом

greet.apply(user, ['Привет']);

bind — вернуть новую функцию с зафиксированным this

const bound = greet.bind(user);
bound('Привет');

Стрелочная функция — лексический this

Берёт this из окружения, не требует привязки:

const obj = {
  items: [1, 2],
  process() {
    return this.items.map((x) => x + this.items.length); // this = obj
  },
};

Когда что применять

  • Одноразовый вызов с нужным this → call/apply.
  • Передать функцию с сохранённым this (колбэк) → bind или стрелка.
  • Метод объекта, обычный this → сокращённый метод (не стрелка).

Частая задача — избежать потери контекста

setTimeout(user.greet.bind(user), 100); // или () => user.greet()

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

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

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