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

Какая конструкция в JavaScript может сделать новый scope для this

В JavaScript новый scope для this можно создать с помощью:

  1. Стрелочных функций - они не создают свой this, а берут его из внешнего контекста:
js
const obj = {
  name: 'Test',
  regularFunc: function() {
    console.log(this.name); // 'Test'
    const arrowFunc = () => {
      console.log(this.name); // 'Test' (берет this из regularFunc)
    };
    arrowFunc();
  }
};
  1. Методов bind/call/apply - явно привязывают контекст:
js
function test() {
  console.log(this.name);
}
const obj = {name: 'Bound'};
const boundFunc = test.bind(obj);
boundFunc(); // 'Bound'
  1. Классов - this внутри методов класса ссылается на экземпляр:
js
class Example {
  constructor() {
    this.value = 42;
  }
  showValue() {
    console.log(this.value);
  }
}
  1. IIFE - создает новый контекст выполнения:
js
const obj = {
  name: 'Original',
  method: function() {
    (function() {
      console.log(this.name); // undefined (this - global/window)
    })();
  }
};
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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