在运行时使用预先确定的对象分配变量

Assigning variables at runtime with pre-determined objects

本文关键字:对象 分配 变量 运行时      更新时间:2023-09-26

我有以下对象:

var myObj = 
{ 
    prop1 : 'val', 
    prop2 : 'val'
},
hisObj = 
{ 
    prop1 : 'val',
    prop2 : 'val'
},
herObj = 
{ 
    prop1 : 'val',
    prop2 : 'val'
};

现在我运行一个 ajax 调用并返回 3 组数据作为数组。这些数组中每个数组的键等于:myhisher

如何将正确的对象分配给处理 ajax 响应的函数中的私有变量。我尝试了这个开始:

function ajax_callback(data)
{
    $.each( data, function( key , value )
    {
        var options = key + 'Obj';
        ...
    });
};

在这种情况下,var options正确地属于 string 型。我将如何动态创建变量options以包含正确的对象而不是其名称的字符串表示形式?

我不确定你在这里想实现什么。但是您可能需要在另一个对象中"命名空间"您的对象。怎么样:

var obj = {
    her: {
        prop1: 'val',
        prop2: 'val'
    },
    his: {
        prop1: 'val',
        prop2: 'val'
    }
/// etc
function ajax_callback(data) {
    $.extend( obj, data ); // merge the data with the previously defined object
});

或者,如果要根据响应键从对象中提取条目:

function ajax_callback(data) {
    $.each( obj, function( key, val {
        var options = obj[key];
    });
});

将变量放入对象中,然后使用键作为索引:

var parentObj = 
    myObj: { 
        prop1 : 'val', 
        prop2 : 'val'
    },
    hisObj: { 
        prop1 : 'val',
        prop2 : 'val'
    },
    herObj: { 
        prop1 : 'val',
        prop2 : 'val'
    }
};
function ajax_callback(data) {
    $.each( data, function( key , value ) {
        var options = parentObj[key];
        ...
    }
}