apply和applyIf这两个方法都是实现将一个对象的属性应用于另一个对象中,相当于属性的拷贝。不同的是apply将会覆盖目标对象中的属性,而applyIf只拷贝目标对象中没有而源对象中有的属性。
apply方法的签名:appl(Object obj ,Object config, Object defaults),该方法包含三个参数,第一个参数是要拷贝的目标对象,第二个参数是拷贝的源对象,第三个参数是可选的,表示给目标对象提供一个默认值。可以简单的理解成:将第三个参数(如果存在)和第二个参数的属性拷贝到第一个参数对象。
javaScript::
<一> var p ={
p1 :"p1 value",
p2 :"p2 value"
fn:function{ alert(this.p2)}
}
var q=new Object();
p2="q2 value";
Ext.apply(q,p);
q.fn();//p2 value
<二>
Ext.apply(q,p,{p3:"p3 value"});
alert(q.p3);//p3 value
<三>
Ext.applyIf(q,p);
q.fn();//q2 value