Window.window - Web API 接口参考 编辑

摘要

window对象的 window 属性指向这个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 属性指向该window对象本身的目的,是为了更容易引用全局对象。不然,就得在最开始写代码的时候进行手动赋值:var window = this; 。

另外一个原因是如果没有这个属性,就不能像这样方便的写:  window.open('http://google.com/'),而只能这样: open('http://google.com/')

使用该属性还有一个原因,有些库,特别是JavaScript模块希望能够提供OOP版本和非OOP版本。例如,如果引用了 this.window.location.href ,JavaScript 模块就可以在它定义的类里面定义一个 window 属性(因为默认没有全局性的 window 变量存在),这个属性可以在将window对象传进这个模块的类的构造器之后被创建。这样,这个类的方法中的 this.window 就指向了window对象。在没有命名空间的版本中,this.window 会重新指向window对象,从而很容易获取到文档的位置。还有一个优点,这个类(即使这个类定义在模块外面)的对象可以随意地改变对window的引用,而如果有一个写死了的window的引用就做不到这样。类内部的默认值仍然可以设置成当前的window对象。

规范

规范状态说明
HTML Living Standard
Window.window
Living Standard和最新版 HTML 5.1一致
HTML 5.1
Window.window
RecommendationHTML5一致
HTML5
Window.window
Recommendation第一个包含 Window.window 定义的快照

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:67 次

字数:3926

最后编辑:7年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文