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 浏览器是否自动更新了新功能或其他什么?
这是 ES7(又名 ES2016)中的新功能。内置原型对象Object.prototype现在是一个不可变的原型异国对象,它的[[prototype]]内部插槽被锁定。
它应该防止代理被插入到全局查找机制中,有关详细信息,请参阅此提交。它最近已在 V8 中实现。