我目前有一个Javascript函数,它使用字符串来引用对象名称并访问其属性.我目前正在使用eval()来获得所需的效果,我知道这是非常非常错误的.这是我目前如何实现我想要的一个例子:
var stringToObjectRef = function() {
var myTestVar = "myTestObject";
var myTestObject = { 'item1' : 100, 'item2' : 12, 'item4' : 18 };
var myValue = eval(myTestVar + '.item1');
alert(myValue);
}();
Run Code Online (Sandbox Code Playgroud)
我尝试过使用像[myTestVar] .item1这样的东西,但这会返回undefined.实现此目的的正确语法是什么?
提前致谢.
如果你在谈论这个item1部分,你正在寻找:
myValue = myTestObject["item1"];
Run Code Online (Sandbox Code Playgroud)
没必要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);
}();
Run Code Online (Sandbox Code Playgroud)
偏离主题,我不记得究竟为什么,但如果你要立即执行那个匿名函数,你需要将函数表达式放在括号中:
var x = (function() { return 5; })();
Run Code Online (Sandbox Code Playgroud)
而不是
var x = function() { return 5; }();
Run Code Online (Sandbox Code Playgroud)
同样,我不记得为什么,以及是否是因为流行的解释器中的实现错误或语法的实际要求.
| 归档时间: |
|
| 查看次数: |
3824 次 |
| 最近记录: |