假设我有一个配置文件,其中包含JSON属性的路径。我的JSON看起来像:
var test = { test: { test2: { test3: 1 } } }
我有一个字符串str = "test.test2.test3"
我知道我可以访问这样的顶级:var foo = "test", test[foo]
但test["test.test2.test3"]
不起作用。另一方面,test["test"]["test2"]["test3"]
有效,但如果我有更复杂的对象(有些可以是5个等级,有些可以是3个等),这不是一个单行。
有没有办法直接访问这个属性而不是在点上分割并循环?
答案 0 :(得分:4)
with(test) eval(str);
有没有人的头爆炸?
就是那个或
eval('test.' + str);
从糟糕的练习篮中挑选。
虽然对于第一个例子,如果你真的想要这个值你想要这个
var value;
with(test) value = eval(str);
但是这种做法会剥夺这种不良实践杰作的纯洁性。