阅读(3239) (0)

window属性:window

2018-07-23 10:51:14 更新

window属性

window窗口对象的window属性指向窗口对象本身。因此,以下表达式都返回相同的窗口对象:

window.window
window.window.window
window.window.window.window
  ...

在网页中,窗口对象也是全局对象。即:

  1. 脚本的全局变量实际上是window的属性:
    var global = {data: 0};
    alert(global === window.global); // displays "true"
  2. 您可以访问window对象的内置属性,而无需键入window.前缀:
    setTimeout("alert('Hi!')", 50); // equivalent to using window.setTimeout.
    alert(window === window.window); // displays "true"

让window属性引用对象本身很可能使得引用全局对象变得容易。否则,您必须在脚本顶部进行手动分配var window = this;。

另一个原因是,如果没有此属性,您将无法编写,例如,“window.open('http://google.com/')”。您必须使用“open('http://google.com/')”来代替。

使用此属性的另一个原因是希望提供OOP版本和非OOP版本(尤其是JavaScript模块)的库。例如,如果我们引用“this.window.location.href”,一个JavaScript模块可以在它定义的类中定义一个名为“window”的属性(因为默认情况下不存在全局“window”变量),这可以在将一个窗口对象传递给模块类的构造函数之后创建。因此,其函数内的“this.window”将引用该窗口对象。在非命名空间版本中,“this.window”将返回“window”,并且还能够轻松获取文档位置。另一个优点是,这样一个类的对象(即使类是在模块之外定义的)可以随意更改它们对窗口的引用,如果它们硬编码了对“window”的引用,它们将无法执行此操作。 类中的默认值仍可以设置为当前窗口对象。

规范

规范 状态 评论
HTML Living Standard 
规范中“Window.window”的定义。
Living Standard
与最新的HTML 5.1快照没有区别
HTML 5.1 
该规范中“Window.window”的定义。
Recommendation
与HTML5没有区别
HTML5 
该规范中“Window.window”的定义。
Recommendation
包含Window.window定义的第一个快照。

浏览器兼容性

电脑端 移动端
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Android webview Chrome for Android
Edge Mobile Firefox for Android
Opera for Android
iOS Safari
基本支持 支持 支持 支持 支持 支持