javascript - 属性的属性在括号中使用字符串?

标签 javascript

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

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

是否可以将任何内容放入一组方括号中,以便取回这些属性中的任何一个?一个简单的测试显示 x['A.B'] 不会返回 'Hello'。有任何语法可以做到这一点吗?

最佳答案

如果您不想迭代,您可以在严格模式下使用 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');

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

关于javascript - 属性的属性在括号中使用字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21564591/

相关文章:

javascript - 获取用户输入以在 javascript 中执行计算

javascript - jEditable 响应处理问题

javascript - 在弹出窗口中 Bootstrap 提前输入

javascript - 根据表格内容插入图片

javascript - PhoneGap 和 OAuth2

javascript - 实现 Redux-Persist 时使用 AnyAction react Redux Typescript 错误

javascript - 如何在 Bootstrap 中构建交互式决策树

javascript - jquery croppie 插件停止我的 jquery 代码中的 "$(window).resize"函数

javascript - "İ".toLowerCase() != "i"

javascript - 查找深度嵌套 JSON 中具有特定名称的所有键