I am trying to apply the properties of an object from objA to objB, but I realized that Ext.apply is erroneous (or a blessing?) In such a way that it only applies first level objects together.
Example:
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
An example outputs:
obj = { name: 'objA', baseParams: { cols: [1,2,3,4,5] } };
I would like to use this output (expected output):
obj = { name: 'objA', baseParams: { cols: [1,2,3,4,5], as_hash: true, limit: 50, sort: 'name' } };
How can I achieve this without doing this?
// 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);