Встречается на собеседованиях • сегодня

В чем разница между контекстом у функции вызванной на объекте и присвоенной в переменную

Разница в значении this:

  1. При вызове метода объекта obj.method() this ссылается на сам объект (obj)
  2. При присвоении метода в переменную const fn = obj.method теряется привязка к объекту, this становится undefined (в strict mode) или window (без strict mode)

Пример:

javascript
const obj = {
  name: 'Test',
  method() {
    console.log(this.name);
  }
};

obj.method(); // 'Test' - this = obj
const fn = obj.method;
fn(); // undefined - this потерян

Для сохранения контекста можно использовать:

  • bind: const boundFn = obj.method.bind(obj)
  • стрелочные функции (если метод определен как стрелочная)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы