Что выведет код Middle this, call, apply, bind обновлено

call не меняет this стрелки

Вопрос

Что выведет код? По строке на каждый вывод.

const obj = {
  v: 'obj',
  make() {
    return () => this.v;
  },
};
const arrow = obj.make();
console.log(arrow.call({ v: 'другой' }));
console.log(obj.make.call({ v: 'call' })());

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: obj, call. Стрелка берёт this из make в момент создания.

Что выведет

obj
call

Разбор

Стрелка берёт this из make в момент создания. В первом случае make вызван как obj.make(), так что стрелка навсегда видит obj, и call с другим объектом ничего не меняет: obj. Во втором случае сам make вызван через call с { v: 'call' }, стрелка создаётся уже с этим this: call.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.