让我有下一个对象
var o = { "foo" : {"bar" : "omg"} };
我可以使用
获得密钥foo
的价值
o["foo"] // return {"bar" : "omg"}
我可以使用
在bar
内获得密钥foo
的值
o["foo"]["bar"] // return "omg"
我可以使用括号bar
一次性获得foo
内[]
键的值。
有点像
o["foo.bar"] // not working(
或
o["foo/bar"] // not working(
答案 0 :(得分:3)
创建一个getter函数来做这样的事情是很常见的。来自评论:
我有对象o和字符串'foo.bar',我想要“omg”。
var getProp = function (theObject, propString) {
var current = theObject;
var split = propString.split('.');
for (var i = 0; i < split.length; i++) {
if (current.hasOwnProperty(split[i])) {
current = current[split[i]];
}
}
return current;
};
注意:这是一个抛出的示例,您需要在将其放到您的网站上之前对其进行防弹并进行缓解。
答案 1 :(得分:0)
很遗憾,您只能使用o["foo"]["bar"]
或o.foo.bar
答案 2 :(得分:0)
不,您必须使用o["foo"]["bar"]
因为它是另一个对象内的对象。如果要使用“foo.bar”访问它,则意味着您必须创建第一个对象:
var o = {"foo.bar": "omg"}
答案 3 :(得分:0)
o["foo.bar"]
或o["foo/bar"]
对您的示例无效。您可以使用更清晰的表示法:
var bar = o.foo.bar // bar will contain 'omg'
答案 4 :(得分:0)
有一种方法,但我不确定这是你要求的:
eval("o.foo.bar");
虽然它很危险,并且不使用[]
,但是如果您想要的是使用字符串来访问它的任何对象