В MDN говорится:
Обратите внимание, что свойство __proto__ может быть переопределено даже у объекта Object.prototype, если новая цепочка заканчивается null
Однако, при попытке выполнить код из примера
var b = {};
Object.prototype.__proto__ =
Object.create(null, // [[Prototype]]
{ hi: { value: function() { alert('hi'); } } });
b.hi();
я получаю ошибку в хроме (версия 63.0.3239.132 x64)
Uncaught TypeError: Immutable prototype object '#<Object>' cannot have their prototype set
at Object.set __proto__ [as __proto__] (<anonymous>)
at js:15
и в Firefox'е (версия 58.0 x64)
TypeError: can't set prototype of this object
А вот в IE11 всё работает.
Почему так происходит и можно ли всё-таки изменить этот прототип?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости