[英]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.