为什么 DOM 有一个名为 self
的对象和另一个名为 window
的对象,而它们是同一事物?更让人困惑的是 window
有一个名为 self
的属性,所以:
window === window.self === self
为什么会这样?我应该使用哪一个?
最佳答案
self
由 javascript 环境定义并指向 [global] 对象(但不是规范的一部分,因此可能不存在),而 window
是 DOM 规范的一部分。
在大多数浏览器中,window
被用作 [global] 对象,但并非总是如此。
self == window.self
并不奇怪,因为它们是同一个对象 - 当查找 self
时,它被发现是全局的一个属性对象(窗口
)。所以它实际上与 window.self == window.self
相同。
如其他地方所述,要可靠地引用 [global]
对象,您应该通过在全局执行上下文中运行 var global = this;
来定义它。
关于javascript - 为什么 DOM 既有 window 又有 self?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2797531/