Что выведет код 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 ошибок.