Выбор ответа Middle Прототипы и классы обновлено
Конструктор возвращает объект
Вопрос
Что выведет код?
function Item() {
this.a = 1;
return { b: 2 };
}
const item = new Item();
console.log(item.a, item.b, item instanceof Item);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: undefined 2 false. Если конструктор явно возвращает объект, new отдаёт именно его, а созданный this выбрасывается.
Варианты ответа
1 2 true1 undefined trueundefined 2 falseправильный ответundefined 2 true
Разбор
Если конструктор явно возвращает объект, new отдаёт именно его, а созданный this выбрасывается. У возвращённого { b: 2 } нет a, а его прототип Object.prototype, а не Item.prototype, поэтому instanceof даёт false. Если бы вернулся примитив (return 5), он был бы проигнорирован и результатом стал бы this. Варианты с a === 1 упускают этот шаг new.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.