Не получается изменить __proto__ у Object.prototype

214
07 февраля 2018, 14:34

В 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 всё работает.

Почему так происходит и можно ли всё-таки изменить этот прототип?

READ ALSO
Почему Webpack не собирает font-awesome?

Почему Webpack не собирает font-awesome?

Использую популярный в гайдах для новичков метод импорта стилей в приложение:

226
Почему не добавляет новую строку?

Почему не добавляет новую строку?

Привет, есть такой вот код, но когда в консоли прописываешь addTask('Hello, World!') для добавления нового пункта оно высвечивает ошибку, что это пустая...

208
Можно ли задать .serialize() параметры?

Можно ли задать .serialize() параметры?

Есть форма с чекбоксами, на нее подвязан serialize(), который хватает соответственно атрибуты name и valueПолучается: checkbox=1&checkbox=2

182
JS/Jquery защита от частых нажиманий

JS/Jquery защита от частых нажиманий

Предположим есть такой скрипт:

195