簡體   English   中英

使用字符串訪問變量

[英]Using a string to access a variable

我目前有一個Javascript函數,它使用字符串來引用對象名稱並訪問其屬性。 我目前正在使用eval()來獲得所需的效果,我知道這是非常非常錯誤的。 這是我目前如何實現我想要的一個例子:

var stringToObjectRef = function() {

    var myTestVar = "myTestObject";
    var myTestObject = { 'item1' : 100, 'item2' : 12, 'item4' : 18 };

    var myValue = eval(myTestVar + '.item1');

    alert(myValue);

}();

我嘗試過使用像[myTestVar] .item1這樣的東西,但這會返回undefined。 實現此目的的正確語法是什么?

提前致謝。

如果您正在談論item1部分,那么您正在尋找:

myValue = myTestObject["item1"];

不需要eval (幾乎從來沒有。)

如果您正在討論使用“myTestObject”字符串獲取myTestObject變量,那么您希望重構代碼,這樣您就不會這樣做,而不是使用eval 遺憾的是,函數中用於符號解析的變量對象無法直接訪問。 重構可以只顯式使用一個對象:

var stringToObjectRef = function() {

    var objects = {};

    var myTestVar = "myTestObject";
    objects.myTestObject = { 'item1' : 100, 'item2' : 12, 'item4' : 18 };

    var myValue = objects[myTestVar].item1;

    alert(myValue);

}();

偏離主題,我不記得究竟為什么,但如果你要立即執行那個匿名函數,你需要將函數表達式放在括號中:

var x = (function() { return 5; })();

而不是

var x = function() { return 5; }();

同樣,我不記得為什么,以及是否是因為流行的解釋器中的實現錯誤或語法的實際要求。

試試這個:

var stringToObjectRef = function() {
  var myTestObject = { 'item1' : 100, 'item2' : 12, 'item4' : 18 };
  var myValue = myTestObject['item1'];
  alert(myValue);
}();

eval(“myTestObject [\\”item1 \\“”)應該可以解決問題,因為myTestObject.item1是myTestObject [“item1”]的簡寫

如何動態引用對象?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM