Что выведет код Senior this, call, apply, bind обновлено
new на привязанной функции и call
Вопрос
Что выведет код? По строке на каждый вывод.
function Point(x) { this.x = x; }
const Bound = Point.bind({ x: 'ctx' });
const p = new Bound(5);
console.log(p.x);
console.log(p instanceof Point);
const target = { x: 0 };
Point.call(target, 7);
console.log(target.x);
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 5, true, 7. При new привязанный this игнорируется: создаётся новый объект с прототипом Point.prototype, в него пишется x = 5.
Что выведет
5
true
7
Разбор
При new привязанный this игнорируется: создаётся новый объект с прототипом Point.prototype, в него пишется x = 5. Поэтому p.x это 5, поэтому p instanceof Point даёт true (и p instanceof Bound тоже: проверка для привязанной функции делегируется исходной). Point.call(target, 7) вызывает конструктор как обычную функцию с this === target, и в target.x записывается 7.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.