Window: self 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Window.self 只读属性返回窗口本身,为一个 WindowProxy 对象。可以通过点表示法在 window 对象上使用(即 window.self),或者独立使用(self)。独立表示法的优点是,在非窗口上下文中存在类似的表示法,例如在 Web Workers 中。通过使用 self,您可以以一种不仅能在窗口上下文中工作(self 将解析为 window.self),而且也能在 worker 上下文中工作(self 将解析为 WorkerGlobalScope.self)的方式来引用全局作用域。

一个 WindowProxy 对象。

示例

如下使用 window.self 的地方可以被 window 替代。

js
if (window.parent.frames[0] !== window.self) {
  // this window is not the first frame in the list
}

此外,当在浏览上下文的活动文档中执行时,window 是对当前全局对象的引用,因此以下所有都等价

js
const w1 = window;
const w2 = self;
const w3 = window.window;
const w4 = window.self;
// w1, w2, w3, w4 all strictly equal, but only w2 will function in workers

规范

规范
HTML
# dom-self-dev

浏览器兼容性

另见