apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝。不同的是apply将会覆盖目标对象中的属性,而applyIf只拷贝目标对象中没有而源对象中有的属性。
apply方法的签名为“apply( Object obj, Object config, Object defaults ) : Object”,该方法包含三个参数,第一个参数是要拷贝的目标对象,第二个参数是拷贝的源对象,第三个参数是可选的,表示给目标对象提供一个默认值。可以简单的理解成把第三个参数(如果有的话)及第二个参数中的属性拷贝给第一个参数对象。看下面的代码:
<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)这一语句把b1的属性拷贝到了b2对象中,因此调用b2的f1方法可以弹出"p2 value"的提示信息。尽管b2对象已经包含了p2属性值,但拷贝后该属性值会被覆盖。可以在调用apply方法时,在第三个参数中指定拷贝属性的默认值,比如下面的代码:
Ext.apply(b2,b1,{p3:"p3 value"});
alert(b2.p3);
这样会使得b2中包含一个p3的属性,值为"p3 value"。
applyIf方法的功能跟apply一样,只是不会拷贝那些在目标对象及源对象都存在的属性。比如把前面演示apply方法的代码改成applyIf,如下:
Ext.applyIf(b2,b1);
b2.f1();
由于b2中已经存在了p2属性,因此,b2.f1()方法中引用this.p2的时候,得到的是"b2 value",而不是在b1中定义的"p2 value"。
分享到:
相关推荐
ext js 4.1apply && override
EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT...
ext 的一些常用方法 ext 的一些常用方法 ext 的一些常用方法
EXT dojochina Ext类静态方法.rar EXT dojochina Ext类静态方法.rar
EXT 中文手册EXT 中文手册EXT 中文手册
Ext 图标大全及应用.rar Ext 图标大全及应用.rar Ext 图标大全及应用.rar
Ext简介及应用案例 Ext简介及应用案例
本文详细介绍了在Ext中如何获取store的数据,对ext语法有一个比较详细的介绍,供新手阅读
Ext中Ajax的应用,包括JSON,XML,Update管理器、EXT调用Dwr等。
Ext中文API Ext3.2中文API ExtAPI Ext中文Ext中文API Ext3.2中文API ExtAPI Ext中文Ext中文API Ext3.2中文API ExtAPI Ext中文
Ext、Ext4中各个组件、属性、方法详解,一个不漏;Ext学习入门及参考最好的资料
扩展Ext中的组件 扩展与插件之间的区别 扩展Ext的新手教程 Ext的类继承 从源码生成Ext 基础用法: DomQuery基础 Ext中的事件 简述模板 模板(Templates)的函数 教你创建Ext UI控件 事件的处理 Ext中的继承 Ext...
EXT2.2源码及中文手册,中文手册介绍了如何应用ext
ext中文教程 ext API ext中文教程 ext API
Ext.3.0.中文Ext.3.0.中文Ext.3.0.中文Ext.3.0.中文Ext.3.0.中文Ext.3.0.中文Ext.3.0.中文Ext.3.0.中文
EXT中文手册,如何使用EXT架构,清楚明白讲解,EXT的具体应用
EXT中文手册 中文API 中文简明教程 Ext Core手册
Ext3_2综合应用的例子
Ext中文帮助文档,提供ext2.1类库 主要有ext的常见界面代码
ext-grid+json简单应用,可以直接套用... 可以跑的工程.sql脚本...