2014-05-05 43 views
0

我想知道是否可以通過使用該變量的名稱來訪問變量(即獲取該變量的值)。一個例子是:根據變量名得到局部變量的值

function myObject(){ 
    var x = 1; 
    this.get = function(varName){return eval(varName);}; 
} 
var test = new myObject(); 
test.get("x"); 

我知道這是可能的EVAL,但我想知道如果同樣可以在不使用eval來完成,就像即具有功能。 (使用eval是不是在我使用的框架允許的。)

+2

這個問題已被詢問了一千次。答案是不。 – RobG

回答

0

您可以訪問全局變量作爲一個關聯數組,像這樣:

var x = 5; 
var variableName = "x"; 
window[variableName]; 

在你的情況,你可以返回this[varName],如果您將var x替換爲this.x

+1

這確實是全局定義變量的解決方案。但是,我只想訪問本地定義的變量(在本例中爲x)。 – Consec

+0

這是做到這一點的唯一方法。只需使用this.x或寫出您的訪問器。 – Meredith

+2

javscript中沒有關聯數組,只有對象(甚至數組基本上都是具有特殊* length *屬性的普通對象以及一些大多數泛型方法)。 *這*引用了一個真實的對象,它與變量無關。 – RobG