javascript - 为什么 DOM 既有 window 又有 self?

标签 javascript dom

为什么 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/

相关文章:

javascript - 如何创建一个具有html标签所有属性的对象?

javascript - AngularJS:如何通过 id 获取 DOM 元素

javascript - 未使用的 Javascript 对象方法如何影响内存使用?

javascript - 我怎样才能防止更漂亮的行为

javascript - 在 Chrome 和 Firefox 中显示图像

javascript - 在 Vanilla JavaScript 中过滤掉父元素中的所有子元素

Java DOM : Number of first child nodes

javascript - 如何向使用dom随机生成的元素添加事件监听器?

javascript - 基于 DOM 的跨站点脚本示例 : Java Script does not get executed

javascript - 在 webpack.config.js 中使用最小化 javascript 的正确方法