从变量创建嵌套属性

Create nested property from variable

本文关键字:属性 嵌套 创建 变量      更新时间:2023-09-26

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

var object = {};

如何使用变量添加嵌套对象的属性?例如:

<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';
}

您需要确保对象[obj1]是有效的:

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

这基本上表示"如果object[obj1]"未定义,则将其设为对象,否则将其赋值给自身。

object[obj1]必须初始化:

var obj1 = $( '#obj1' ).text();
var nestedObj = $( '#nestedObj' ).text();
if(!object[obj1]) {
    object[obj1] = {};
}
object[obj1][nestedObj] = 'someone';
function O(key, val) {
    var o = {};
    o[key] = val;
    return o;
}
function f(obj1, nestedObj) {
    $.extend(true, object, O(obj1, O(nestedObj, 'someone')));
}