apply及applyIf方法都是用于把一个对象中的属性复制到另外一个对象的属性中。两者的差异在于apply将会覆盖目标对象中的属性,而applyIf只复制目标对象中没有而源对象中有的属性。
Ext.apply(属性复制)的源代码如下所示:
Ext.apply = function(object, config, defaults) { if (defaults) { Ext.apply(object, defaults); } if (object && config && typeof config === 'object') { var i, j, k; for (i in config) {//复制所有属性 object[i] = config[i]; } if (enumerables) { for (j = enumerables.length; j--;) { k = enumerables[j]; if (config.hasOwnProperty(k)) { object[k] = config[k]; } } } } return object; };
以下是Ext.applyIf函数的源代码:
applyIf: function(object, config) { var property; if (object) { for (property in config) { if (object[property] === undefined) {//如果object中不含有这个属性,复制属性,否则不复制 object[property] = config[property]; } } } return object; },