未捕获的TypeError:不可变的原型对象&#39;#<object>&#39;无法设置原型

时间:2016-12-10 14:03:27

标签: javascript prototype typeerror uncaught-typeerror

我有.js文件链接到.htm文件,.js文件中唯一的代码是行:

Object.setPrototypeOf(Object.prototype,{x:616});

在加载.htm页面时,&#34; chrome控制台&#34;显示错误:

Uncaught TypeError: Immutable prototype object '#<Object>' cannot have their prototype set

我以前从未见过这个错误,在这里或网上找不到任何内容。

我认为物体已被密封/冻结,因此进行了测试:

console.warn('sealed        ⇒',Object.isSealed(Object.prototype));      //  false
console.warn('frozen        ⇒',Object.isFrozen(Object.prototype));      //  false
console.warn('extensible    ⇒',Object.isExtensible(Object.prototype));  //  true

但这没有解决问题,因此让我感到难过。这是第一次在设置Object.prototype的原型时发生这种情况,让我想知道我的Chrome浏览器是否已使用新功能自动更新?

1 个答案:

答案 0 :(得分:4)

这是ES7(又名ES2016)的新功能。内置原型对象Object.prototype现在是Immutable Prototype Exotic Objects,其[[prototype]]内部插槽已锁定。

应该{​​{3}},有关详细信息,请参阅prevent proxies from being inserted in the global lookup mechanism。它有this commit