Что выведет код Senior Прототипы и классы обновлено

instanceof после замены prototype

Вопрос

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

function F() {}
const a = new F();
F.prototype = {};
const b = new F();
console.log(a instanceof F);
console.log(b instanceof F);
console.log(a.constructor === F);
console.log(b.constructor === F);

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

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

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

Коротко

Код выведет: false, true, true, false. instanceof проверяет, есть ли текущий F.prototype в цепочке объекта.

Что выведет

false
true
true
false

Разбор

instanceof проверяет, есть ли текущий F.prototype в цепочке объекта. У a прототипом остался старый объект, его заменили: false. b создан с новым прототипом: true. constructor берётся из прототипа: у старого прототипа constructor === F, а у нового {} своего constructor нет, он берётся из Object.prototype и равен Object.

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

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