3
在Javascript中,我習慣於通過使用[]
運算符來「動態地」訪問已知命名空間內的變量(如果我在這裏使用了錯誤的單詞,請糾正我)。例如(從全局命名空間):如何從閉包範圍動態訪問本地變量(通過其名稱的字符串形式)?
var a = 1;
window['a']; # => 1
或從對象類型命名空間:
var a = { b: 1 };
a['b']; # => 1
而且我熟悉如何this
確定的基本知識:
var a = function(){ return this['c']; };
var b = { c: 1 };
a.apply(b); # => 1;
但是在函數本身中,我如何訪問我剛剛使用var
實例化(或重新定義)的局部變量?
也就是說,我想下面的函數調用返回1
但沒有調用a
:
function(){
var a = 1;
return a;
}
不能使用window['a']
因爲a
在本地定義,而不能使用this['a']
因爲this
根據調用函數的上下文而變化。
在一個現實的環境中,我只是簡單地重構,以避免動態創建和訪問局部變量,因爲無論如何它通常是一個壞主意,但作爲一個學術問題,我很好奇是否有可能通過它訪問a
字符串名稱。
請參閱http://stackoverflow.com/questions/598878/how-can-i-access-local-scope-dynamically-in-javascript和http://stackoverflow.com/questions/2336508/javascript-get-訪問本地變量或變量在閉包的名稱和http://stackoverflow.com/questions/1119335/javascript-local-variable-declare – 2011-02-23 18:04:14