【发布时间】:2013-06-04 21:47:21
【问题描述】:
我在尝试使用字符串访问全局数组索引的属性时遇到了问题。我动态生成的字符串看起来像这样:
var foo = "arr[0].prp[0].prp[1]"
数组中的索引及其深度是动态的,我只是提供一个示例来说明它的外观。
现在的问题是当我尝试使用这个字符串来获取这样的属性时,它失败了:
foo.something、foo["something"]、window[foo].something或window[foo]["something"]
不过,我可以使用 eval() 来让它工作,但我真的想在不使用它的情况下离开。
有人有什么建议或想法吗?
【问题讨论】:
-
我首先想到的是 eval。
-
这就是 eval 实际上的用途。仍然想知道这个字符串究竟是如何生成的;把它变成一个访问器数组至少会允许理智的选择。
-
你为什么把它放在一个字符串里?这是干什么用的?
-
对于那些想知道的人来说,字符串是通过单击许多项目列表中的项目生成的。然后我获取项目的 id 并基于它构造一个字符串,以便访问包含列表中所有项目信息的数组。
-
直接访问
something,而不是像window["arr"][0]["prp"][0]["prp"][1]["something"]这样的字符串格式的表达式。它肯定会奏效。
标签: javascript