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

Как можно работать с контекстом в JS?

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

С контекстом (`this`) работают через: методы объектов (this = объект), `call`/`apply`/`bind` (явная привязка), стрелочные функции (лексический this), `new` (новый объект), поля класса.

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

Методы объекта

this = объект слева от точки:

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

call / apply — вызвать с заданным this

fn.call(obj, arg1, arg2);   // аргументы списком
fn.apply(obj, [arg1, arg2]); // аргументы массивом

bind — зафиксировать this

const bound = fn.bind(obj); // новая функция с this = obj

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

Берут this из окружения (для колбэков, чтобы не терять контекст):

setTimeout(() => this.method(), 100); // this сохранён

new — новый объект

new Constructor(); // this = новый экземпляр

Поля класса со стрелками

Фиксируют this для обработчиков:

class Btn { handleClick = () => this; } // this = экземпляр

Частые задачи

  • Не терять контекст в колбэках → bind или стрелка.
  • Заимствовать метод → call/apply.
  • Фиксировать this → bind, стрелка, поле класса.

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

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

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