5

我正在尝试动态创建 JSON,但是当我执行以下操作时:

var jsonVar = {
    "section": {}
}

var elementsStoragePrefix = "_app_", 
    elementName = elementsStoragePrefix + "some_name";

$.extend(jsonVar .section, { elementName: "<option>This is a text</option>"});

我得到的关键是 elementName 而不是 _app_some_name

jsonVar.section =>
    Object
        elementName: "<option>This is a text</option>"
        __proto__: Object
4

2 回答 2

9

创建对象文字时,您不需要引用属性名称,因此在您的示例中elementName将按字面意思进行。值得庆幸的是,您可以使用方括号语法(或者无论您如何拼写):

var extendObject = {};
extendObject[elementName] = '<option>Foobar</option>';
$.extend(jsonVal.section, extendObject);
//or, to use brackets all the way:
$.extend(jsonVal['section'], extendObject);

那应该为您解决问题

于 2013-02-03T00:20:17.330 回答
4
jsonVar.section[elementName] = "<option>This is a text</option>";
于 2013-02-03T00:19:04.163 回答