2010-09-30 73 views
13

在JavaScript中的每個全局變量是「窗口」訪問所有局部變量

顯然,所有的局部變量(如藏漢參數)的屬性被存儲爲'Call object'的性質(見各功能的章4.6.2。Persumably唯一現存的壽命說功能。

基本上,我希望能夠做到含有局部變量

for (var obj in CallObject) { // } 

能否訪問說對象,如果是的話怎麼辦?或者有沒有訪問所有的任何其他方式本地va函數的riables。

[編輯]

事實證明,參數是一個函數的激活對象的屬性。這必須存儲在某個地方。

「的激活對象純粹是 規範機構,是ECMAScript程序 訪問激活對象 不可能」。

結果ECMAScript狀態我不允許訪問它。

如何訪問參數屬性,並以某種方式鏈接到本地​​變量?

+2

在Javascript中沒有辦法做到這一點。另外,全局變量不是(嚴格地說)總是「窗口」的屬性 - 它取決於解釋器在哪裏運行。例如,在V8或Rhino中運行的服務器端Javascript程序中,沒有「窗口」,但有一個「全局上下文」對象扮演相同的角色(就問題而言)。 – Pointy 2010-09-30 15:14:32

回答

3

沒有。在JavaScript的任何瀏覽器實現中都沒有辦法做到這一點。

從理論上講,一個實現可能會提供一個擴展來允許代碼檢查當前的Variable對象(又名函數中的Activation對象;「Call object」是由Flanagan組成的術語, ECMAScript規範),但沒有實現我知道這是否。

1

在每個函數中你都會得到一個名爲「arguments」的隱式數組,除此之外,沒有這種東西。

+0

是的 - 這是''這個'。但它也不是很有用 – mykhal 2011-08-03 19:53:28