2013-06-05 76 views
0

我想在我的應用程序中訪問全局JS範圍的所有屬性。訪問沒有DOM的全局JS上下文的屬性

沒有DOM,所以我不能使用以下命令:

for (var attr in window) { 
    // attr is in the global scope 
} 

有沒有辦法讓全球範圍JS的參考?

+2

如果沒有DOM,你的環境是什麼?節點? – elclanrs

+0

自我,這通常工作。 – dandavis

+0

您是否有效地詢問您是否可以訪問給定執行上下文的環境記錄?如果是這樣,答案几乎是「不」。 –

回答

2

在非嚴格模式下,你可以使用這個得到對全局對象的引用:

var globalObj = (function(){return this}()); 

,如果你沒有在呼叫建立這個,則默認爲全局對象。這將在任何執行上下文中工作(但不是在嚴格模式下)。簡單的只創建一個全局變量引用全局對象:

var global = this; 

,或者傳遞到IIFE:

(function (global) { 
    // In here, global === global object 
    ... 
}(this)) 

無論西裝。

+0

+1我想知道ECMAScript是否需要'this'來引用全局執行上下文中的全局對象,並且它似乎確實如此。 http://es5.github.io/#x10.4.1.1 –