2013-08-23 45 views

回答

5

這是一個對象,所以它不能是一個閉包(閉包是函數,加上一個作用域鏈)。這也是全局範圍對象,因爲所有全局變量都是屬性window

你提到的文章中說:

它看起來像全球範圍與運行的最外面的範圍無非是關閉支持的JavaScript已經內置到它的副產品多,組合(一個DOM窗口或CommonJS實現的其他範圍)。

筆者並不是說window是關閉,它只是說,一切都進入了被困在封閉同樣的原因變量在全球範圍內都在內部範圍可見。那是真實的。


這包括向window對象本身,如火箭的Hazmat指出的引用。還有不止一個,有window,self,top ......所以window.window.top.window.self === window。實際上,全局可訪問window的原因是因爲全局對象中存在對它的引用(=== itself)。另請參閱:my answerWhy top level functions are created as methods of window in JavaScript?及其下方的註釋。

+0

它也是DOM的根對象。 –

+0

「所有全局變量都是'window'的屬性,比如'window'。所以,你可以訪問:'window.window' :-P –

+0

@RocketHazmat是的,這很有趣,值得一提。添加了關於它的一個筆記。 – bfavaretto

0

這是一個對象。您可以添加屬性並從中調用屬性。您使用的許多標準功能實際上都是window對象的一部分,但可以省略。如果您在腳本中創建一個新窗口,它將擁有自己的window對象,您可以引用和操作。

閉包爲變量創建一個範圍,就像一個窗口創建範圍一樣。但是,閉包是一個函數,因此window對象不是閉包。