apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝。不同的是apply将会覆盖目标对象中的属性,而applyIf只拷贝目标对象中没有而源对象中有的属性。
??? <script>
?????? Ext.onReady(function(){
?????? ??? var b1 = {
????????????? p1:"p1 value",
?????????????
????????????? p2:"p2 value",
?????????????
????????????? f1:function(){alert(this.p1)},
?????????????
????????????? f2:function(){alert(this.p2)}
?????????? };
??????????
?????????? var b2 = new Object();
??????????
?????????? b2.p1 = "b2 value";
??????????
?????????? Ext.apply(b2,b1);
??????????
?????????? b2.f1(); // 这个挺有意思,不仅属性会复制,连b1中的f1方法也可以被复制和使用
// ( 有点费话,因为f1和f2就是以属性的形式生命的 )
??????????
?????????? b2.f2();
??????????
//会使得b2中包含一个p3的属性,值为"p3 value"。
?????????? Ext.apply(b2,b1,{p3:"p3 value"});
??????
?????????? alert(b2.p3)?????
?????? });
??? </script>
Ext.apply(b2,b1,{p3:"p3 value"});
alert(b2.p3);
Ext.applyIf(b2,b1);
b2.f1();