从变量创建嵌套属性

时间:2011-07-26 18:26:17

标签: javascript jquery

假设我有一个像这样的空对象:

var object = {};

如何使用变量添加具有嵌套对象的属性? E.g:

<span id='obj1'>person</span>
<span id='nestedObj'>name</span>

var obj1 = $( '#obj1' ).text();
var nestedObj = $( '#nestedObj' ).text();
function (obj1, nestedObj) {
    //Trying to simulate object.person.nestedObj
    object[obj1][nestedObj] = 'someone';
}

3 个答案:

答案 0 :(得分:1)

您需要首先确保对象[obj1]有效:

    object[obj1] = object[obj1] || {};
    object[obj1][nestedObj] = 'someone'

这基本上说“如果对象[obj1]”未定义,则将其设为对象,否则将其分配给自身。

答案 1 :(得分:0)

object[obj1]必须初始化:

var obj1 = $( '#obj1' ).text();
var nestedObj = $( '#nestedObj' ).text();

if(!object[obj1]) {
    object[obj1] = {};
}

object[obj1][nestedObj] = 'someone';

答案 2 :(得分:0)

function O(key, val) {
    var o = {};
    o[key] = val;
    return o;
}

function f(obj1, nestedObj) {
    $.extend(true, object, O(obj1, O(nestedObj, 'someone')));
}