括号中使用String的属性的属性?

时间:2014-02-04 22:10:48

标签: javascript

假设我有一个具有属性的复杂对象。

var x = {};
x.A.B = 'Hello';
x.A.C = 'World!';
x.D.E = 100;
x.D.F = 2.5;

为了取回这些属性,我可以放在一组方括号中吗?一个简单的测试表明x['A.B']没有返回'Hello'。这样做有什么语法吗?

1 个答案:

答案 0 :(得分:2)

如果您不想迭代,可以在严格模式下使用eval进行相当安全的操作。 不是我建议这样做。但这是一种方法。

var x = {A:{}};
x.A.B = 'Hello';

var propertyPath = 'A.B';
var value = eval('"use strict"; x.' + propertyPath);

console.log(value);

另一种更可重用的方法是创建一个新的Function对象,而不是使用eval

function propertyValue(obj, propertyPath) {
    'use strict';
    return (new Function('obj', 'return obj.' + propertyPath))(obj);
}

var value = propertyValue(x, 'A.B');

实际上是相同的,但有明确的定义。