window屬性:window

2018-07-24 11:21 更新

window屬性

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

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

在網(wǎng)頁中,窗口對象也是全局對象。即:

  1. 腳本的全局變量實際上是window的屬性:
    var global = {data: 0};
    alert(global === window.global); // displays "true"
  2. 您可以訪問window對象的內(nèi)置屬性,而無需鍵入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”變量),這可以在將一個窗口對象傳遞給模塊類的構(gòu)造函數(shù)之后創(chuàng)建。因此,其函數(shù)內(nèi)的“this.window”將引用該窗口對象。在非命名空間版本中,“this.window”將返回“window”,并且還能夠輕松獲取文檔位置。另一個優(yōu)點是,這樣一個類的對象(即使類是在模塊之外定義的)可以隨意更改它們對窗口的引用,如果它們硬編碼了對“window”的引用,它們將無法執(zhí)行此操作。 類中的默認值仍可以設(shè)置為當(dāng)前窗口對象。

規(guī)范

規(guī)范 狀態(tài) 評論
HTML Living Standard 
規(guī)范中“Window.window”的定義。
Living Standard
與最新的HTML 5.1快照沒有區(qū)別
HTML 5.1 
該規(guī)范中“Window.window”的定義。
Recommendation
與HTML5沒有區(qū)別
HTML5 
該規(guī)范中“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
基本支持 支持 ? 支持 ? ? 支持 支持 ? 支持 ? ?
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號