按名称访问JavaScript子属性

时间:2013-02-18 18:35:44

标签: javascript

我编写了以下JavaScript函数(较大的“类”的一部分),以帮助确保任何使用对象的人在“values”属性中存储属性值。

function _updateAttributes(attribute, value) {
    _attributes[attribute] = { values: { value: value }};
}

它适用于扁平结构,但在我开始尝试将其用于子属性时会崩溃。

运行以下代码后:

myEntity.updateAttribute('name', 'Frankenstein');
myEntity.updateAttribute('name.source', 'John Doe');

我想要以下结构:

{
    "attributes": {
        "name": {
            "values": {
                "value": "Frankenstein"
            },
            "source": {
                "values": {
                    "value": "JohnDoe"
                }
            }
        }
    }
}

相反,它会像这样出现:

{
    "attributes": {
        "name": {
            "values": {
                "value": "Frankenstein"
            }
        },
        "name.source": {
            "values": {
                "value": "JohnDoe"
            }
        }
    }
}

有没有什么干净的方式来编写这个JavaScript,或者我是否会面临拆分字符串并手动构建结构?

注意:我意识到即使是首选的结构也有点奇怪,但是我正在映射的Java对象需要这种格式,所以我这里没有任何选项。

1 个答案:

答案 0 :(得分:1)

你必须解析字符串(parse有点强,只有一个split('.')有一个循环)。

但坦率地说,更清洁的方式就是:

myEntity.name = {values: 'Frankenstein'};
myEntity.name.source = {values: 'John Doe'};