Что выведет код 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 ошибок.
Предыдущий вопрос
Поле наследника во время конструктора родителя
Следующий вопрос
Затенение метода прототипа и delete