Что выведет код Senior Прототипы и классы обновлено
Объект без прототипа
Вопрос
Что выведет код? По строке на каждый вывод.
const o1 = {};
console.log(o1.toString());
const o2 = Object.create(null);
try { console.log(o2.toString()); } catch (e) { console.log(e.constructor.name); }
console.log(Object.prototype.toString.call(o2));
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: [object Object], TypeError, [object Object]. Почему так Object.create(null) создаёт объект без прототипа: у него нет ни toString, ни hasOwnProperty, ни valueOf.
Что выведет
[object Object]
TypeError
[object Object]
Разбор
Почему так
Object.create(null) создаёт объект без прототипа: у него нет ни toString, ни hasOwnProperty, ни valueOf. Такой объект используют как чистый словарь - в него нельзя случайно попасть ключом вроде 'constructor' или 'proto'. Вызвать метод всё равно можно, но только явно через Object.prototype.method.call.
Вывод
[object Object]
TypeError
[object Object]
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.