未捕获的类型错误:不可变原型对象 '#<Object>' 无法设置其原型

Los*_*ace 3 javascript prototype typeerror

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

Object.setPrototypeOf(Object.prototype,{x:616});
Run Code Online (Sandbox Code Playgroud)

在加载 .htm 页面时,“chrome 控制台”显示错误:

Uncaught TypeError: Immutable prototype object '#<Object>' cannot have their prototype set
Run Code Online (Sandbox Code Playgroud)

我以前从未见过此错误,并且无法在此处或在线找到任何相关信息。

我假设该对象已被密封/冻结,因此进行了测试:

console.warn('sealed        ?',Object.isSealed(Object.prototype));      //  false
console.warn('frozen        ?',Object.isFrozen(Object.prototype));      //  false
console.warn('extensible    ?',Object.isExtensible(Object.prototype));  //  true
Run Code Online (Sandbox Code Playgroud)

但这并没有说明问题,因此让我感到困惑。这是有史以来第一次在设置原型时发生这种情况,Object.prototype我是否想知道我的 Chrome 浏览器是否自动更新了新功能或其他什么?

Ber*_*rgi 6

这是 ES7(又名 ES2016)中的新功能。内置原型对象Object.prototype现在是一个不可变的原型异国对象,它的[[prototype]]内部插槽被锁定。

它应该防止代理被插入到全局查找机制中,有关详细信息,请参阅此提交。它最近已在 V8 中实现