Как настроить контекст?
Объекты и прототипы
Контекст (`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 или стрелка, чтобы не терять контекст.