指定`window .__ proto__ = prelude`后,`window.onload`无法运行,但为什么?

时间:2012-10-17 12:56:01

标签: javascript

prelude表示此对象:http://gkz.github.com/prelude-ls/
但是,将prelude绑定到window.__proto__似乎并不是一个好主意 我很好奇并且很困惑为什么会这样,以及我在Chrome中的代码:

window.__proto__ = prelude;
window.onload = function(){
  console.log('loaded');
}

1 个答案:

答案 0 :(得分:0)

__proto__是对窗口对象原型的非标准引用(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/proto)。

在第一行中,您将覆盖window的整个原型。这意味着之前写入原型对象的所有其他内容都会获得列表,包括可能负责调用window.onload的本机函数。

您通常不应该覆盖原型对象,而是扩展原型对象,或者直接将新属性直接添加到window等对象。