Что выведет код Junior this, call, apply, bind обновлено
Одолженный метод со стрелкой внутри
Вопрос
Что выведет код? По строке на каждый вывод.
const team = {
name: 'core',
members: ['Аня', 'Оля'],
list() {
return this.members.map((m) => m + '@' + this.name);
},
};
console.log(team.list().join(', '));
const other = { name: 'web', members: ['Катя'], list: team.list };
console.log(other.list().join(', '));
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: Аня@core, Оля@core, Катя@web. list обычный метод, его this определяется вызовом. team.list() даёт this === team, а стрелка внутри map берёт тот же this: Аня@core, Оля@core.
Что выведет
Аня@core, Оля@core
Катя@web
Разбор
list обычный метод, его this определяется вызовом. team.list() даёт this === team, а стрелка внутри map берёт тот же this: Аня@core, Оля@core. Метод скопирован в other и вызван как other.list(), поэтому this === other, и стрелка видит уже его: Катя@web.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.