2014-01-17 180 views
7
  1. Web瀏覽器中的哪個對象是全局對象?
  2. 全局範圍是全局對象提供的範圍嗎? 如果不是,那麼發現全球範圍在哪裏?

回答

5

在瀏覽器環境中,窗口被認爲是全局範圍。

該窗口對象實現了窗口接口,這反過來從AbstractView接口繼承。
一些附加的全局函數,名稱空間對象,接口和構造函數(通常不與該窗口關聯,但在其上可用)列在JavaScript Reference和DOM Reference中。

窗口對象表示窗口本身。
窗口的文檔屬性指向在該窗口中加載的DOM文檔。
使用document.defaultView屬性可以獲得給定文檔的窗口。

在標籤瀏覽器,如Firefox,每個選項卡包含它自己的窗口對象(如果你正在寫一個擴展,瀏覽器窗口本身就是一個單獨的窗口了。
也就是說,窗口對象不在同一個窗口中的選項卡之間共享,一些方法,即window.resizeTo和window.resizeBy適用於整個窗口,而不適用於窗口對象所屬的特定選項卡。一般而言,任何與選項卡無法合理相關的內容都屬於窗口代替。

3
  1. 全局對象被稱爲window
  2. 是,全球SCO pe由窗口提供,所以你可以通過window獲得任何全局變量。變量
1

多麼美妙的問題。我一直在思考這一段時間。這是我的想法。 是的,它的確有一種叫做全局對象和全局範圍的東西。但是,全局範圍是虛擬的,並且實際上是全局對象的實時鏡像反射(即,全局對象中存在的任何屬性作爲全局函數/範圍中的變量存在)。全局範圍的任何更新都是更新全局對象(即,如果創建全局變量,則將其添加到全局範圍和全局對象中)。這是一個很酷的事實:如果可以創建或調用全局範圍,那麼傳入它的上下文實際上就是全局對象。

這是硬核證明,沒有實際在JavaScript中的函數之外執行的代碼。有人認爲頂級代碼和內聯腳本實際上並不是在一個函數內部執行,但這不是真正的原因,因爲全局範圍必須被創建,全局函數必須被調用,這意味着任何頂級代碼都必須運行在那個全局函數裏面。