我試圖從objA適用對象屬性objB但我意識到Ext.apply是有缺陷的(或祝福?)在它僅適用於第一級的方式對象組合在一起。有沒有更好的方法來使用Ext.apply將子/子對象組合到另一個對象中?
例子:
var objA = {
name: 'objA',
baseParams: {
cols: [1,2,3,4,5]
}
};
//used in subclass
var objB = {
name: 'objB',
baseParams: {
limit: 50,
sort: 'name'
}
};
//used in baseclass
var objC = {
name: 'objC',
baseParams: {
as_hash: true,
limit: 20
}
};
Ext.apply(objB,objA); //used in subclass
Ext.apply(objC,objB); //used in baseclass
例將輸出:
obj = {
name: 'objA',
baseParams: {
cols: [1,2,3,4,5]
}
};
我想這個輸出,而不是(預期輸出):
obj = {
name: 'objA',
baseParams: {
cols: [1,2,3,4,5],
as_hash: true,
limit: 50,
sort: 'name'
}
};
我怎樣才能做到這一點而不做這個?
// subclass:
var bpTemp = {};
bpTemp.baseParams = Ext.apply(objB.baseParams, objA.baseParams);
Ext.apply(objB,objA);
Ext.apply(objB,bpTemp);
// base class:
var bpTemp = {};
bpTemp.baseParams = Ext.apply(objC.baseParams, objB.baseParams);
Ext.apply(objC,objB);
Ext.apply(objC,bpTemp);
有趣的問題,期待着一個很好的解決方案 – ChrisR 2011-03-07 11:55:44
謝謝你,還在尋找一個答案,但。 – CincauHangus 2011-03-08 02:51:29