0

私は次のオブジェクトを持っています:

var myObj = 
{ 
    prop1 : 'val', 
    prop2 : 'val'
},

hisObj = 
{ 
    prop1 : 'val',
    prop2 : 'val'
},

herObj = 
{ 
    prop1 : 'val',
    prop2 : 'val'
};

ここで、ajax呼び出しを実行し、3セットのデータを配列として返します。myこれらの各配列のキーは、、、hisおよびに等しくなりherます。

ajax応答を処理する関数内のプライベート変数に正しいオブジェクトを割り当てるにはどうすればよいですか。私はこれを始めようとしました:

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

        ...
    });
};

var optionsこの場合、当然のことながらタイプstringです。options名前の文字列表現ではなく、正しいオブジェクトを含むように変数を動的に作成するにはどうすればよいですか?

4

2 に答える 2

2

ここで何を達成しようとしているのかわかりません。ただし、おそらく、オブジェクトを別のオブジェクト内に「名前空間」する必要があります。どうですか:

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];
    });
});
于 2012-08-13T16:17:54.100 に答える
1

変数をオブジェクトに入れてから、キーをインデックスとして使用します。

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];
        ...
    }
}
于 2012-08-13T16:24:25.480 に答える