我目前有一个 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 之类的东西,但这返回未定义。实现此目的的正确语法是什么?
提前致谢。
如果你说的是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; }();
同样,我不记得为什么,也不记得是因为流行解释器中的实现错误还是语法的实际要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)