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