`

Ext.apply

阅读更多

apply方法的签名为“apply( Object obj, Object config, Object defaults ) : Object”,

第一个参数是要拷贝的目标对象,

第二个参数是拷贝的源对象,

第三个参数是可选的,表示给目标对象提供一个默认值。

可以简单的理解成把第三个参数(如果有的话)及第二个参数中的属性拷贝给第一个参数对象。

Ext源代码如下:

  1. /**  
  2.  * Copies all the properties of config to obj.  
  3.  * @param {Object} obj The receiver of the properties  
  4.  * @param {Object} config The source of the properties  
  5.  * @param {Object} defaults A different object that will also be applied for default values  
  6.  * @return {Object} returns obj  
  7.  * @member Ext apply  
  8.  */   
  9. Ext.apply = function (o, c, defaults){  
  10.     // no "this" reference for friendly out of scope calls   
  11.     if (defaults){  
  12.         Ext.apply(o, defaults);  
  13.     }  
  14.     if (o && c &&  typeof  c ==  'object' ){  
  15.         for ( var  p  in  c){  
  16.             o[p] = c[p];  
  17.         }  
  18.     }  
  19.     return  o;  
  20. };  

另外还有ext.applyif 也是对象克隆,不同的是,克隆的对象并不会覆盖原有属性和方法

具体代码如下:

  1. applyIf :  function (o, c){  
  2.           if (o){  
  3.               for ( var  p  in  c){  
  4.                   if (!Ext.isDefined(o[p])){  
  5.                       o[p] = c[p];  
  6.                   }  
  7.               }  
  8.           }  
  9.           return  o;  
  10.       }, 
分享到:
评论

相关推荐

    ext js 4.1apply && override

    ext js 4.1apply && override

    ExtJSWeb应用程序开发指南(第2版)

    6.3.2 Ext.core.DomHelper.applyStyles() 6.3.3 createTemplate() 6.3.4 insertAfter() 6.3.5 insertBefore() 6.3.6 insertFirst() 6.3.7 insertHtml() 6.3.8 overwrite() 6.4 Ext.core....

    EXT核心API详解

    apply( Object obj, Object config, Object defaults ) : Object 从config拷贝所有的属性到obj,如果有defaults参数,也将拷贝其属性到obj applyIf( Object obj, Object config ) : Object 从config拷贝所有属性至obj...

    Ext Js权威指南(.zip.001

    4.1.2 apply和applyif方法 / 90 4.1.3 不推荐的extend方法 / 92 4.1.4 数据及其类型检测 / 95 4.1.5 其他的基础方法 / 99 4.2 为框架顺利运行提供支持 / 107 4.2.1 平台检测工具:ext.is / 107 4.2.2 当前...

    ExtJs原生批量上传+实时进度

    Ext.apply(me, { items: [{ xtype: 'uploadContainer', uploadParams: me.uploadParams, url: 'SystemUploadController.do?method=uploadFile', border: false }] }); me.callParent(arguments);...

    轻松搞定Extjs_原创

    五、Ext.apply()和Ext.applyIf() 20 六、小结 21 第四章:消息框 22 一、话说消息框 22 二、最简单的消息框——提示框 23 三、输入框 23 四、确认框 24 五、自定义消息框 24 六、进度条对话框 25 七、让消息框飞出来...

    精通JS脚本之ExtJS框架.part1.rar

    4.4.1 Function.call()/apply()方法 4.4.2 函数的作用域 4.4.3 Ext.lib.Event事件 4.4.4 Ext.util.Observable事件 4.4.5 Ext.EventManager事件 4.4.6 Ext.EventObject事件 4.5 各种事件登记方式 4.5.1 传统式...

    Extjs中ComboBoxTree实现的下拉框树效果(自写)

    最近涉及到的一个项目中,需要实现ComboBoxTree的效果,首先,看看效果吧…… 在Extjs中是没有这种效果的,所以... Ext.ux.TreeCombo.superclass.constructor.call(this, Ext.apply({ maxHeight: 300, editable: false

    Ext深入浅出 数据传输

    Ext深入浅出 数据传输 第10 章 数据存储与传输.....................................230 10.1 Ext.data简介............................................230 10.2 Ext.data.Connection....................230 ...

    javascript Ext JS 状态默认存储时间

    代码如下:Ext.state.CookieProvider = function(config){ Ext.state.CookieProvider.superclass.constructor.call(this); this.path = “/”;... Ext.apply(this, config); this.state = this.readCookies();

    ExtJs3.0中Store添加 baseParams 的Bug

    代码如下: this.store.on(‘beforeload’, function() { Ext.apply(Ext.getCmp(“propTypeGrid”).store.baseParams, { 参数1: ‘111’, 参数2: ‘111’ }); }); 但是在 3.0 中这样无法增加参数,于是在 ExtJs官方...

    ext中store.load跟store.reload的区别示例介绍

    }, 代码如下: load : function(options) { options = Ext.apply({}, options); this.storeOptions(options); if(this.sortInfo && this.remoteSort){ var pn = this.paramNames; options.params = Ext.apply({}, ...

    精通JS脚本之ExtJS框架.part2.rar

    4.4.1 Function.call()/apply()方法 4.4.2 函数的作用域 4.4.3 Ext.lib.Event事件 4.4.4 Ext.util.Observable事件 4.4.5 Ext.EventManager事件 4.4.6 Ext.EventObject事件 4.5 各种事件登记方式 4.5.1 传统式...

    Extjs中文教程

    Ext OOP 基础.........................................................................................................17 一、................................................19 五、Ext.apply()和...

    extjs 时间范围选择自动判断的实现代码

    extjs中 有时需要选择一个日期范围,需要...Ext.apply(Ext.form.field.VTypes, { daterange: function (val, field) { var date = field.parseDate(val); if (!date) { return false; } if (field.startDateField &&

    ext-2.3.0+CKEditor 3.0.1+ckfinder_asp_1.4配置详解及工程源码

    Ext.form.TextArea.superclass.setValue.apply(this,[value]); CKEDITOR.instances[this.id].setData( value ); }, getValue : function(){ CKEDITOR.instances[this.id].updateElement(); return Ext....

    openwrt-orangepi-zero-ext4-sdcard.img.gz

    OpenWrt-Lede_18.06.02 OrangePi Zero wifi-xr819 and soc-audio enabled! OrangePi Zero 安装OpenWrt 能够实现wifi和...Click Apply changes, and reboot. Orange-pi reboots and a new AP appears "orangepi-zero".

    Javascript中定义方法的另类写法(批量定义js对象的方法)

    代码如下: isArray : function(v){ return toString.apply(v) === ‘[object Array]’; }, isDate : function(v){ return toString.apply(v) === ‘... }, isPrimitive : function(v){ return Ext.isString(v) ||

    gradle-idea-ext-plugin:用于在Gradle脚本中存储IJ设置的插件

    gradle-idea-ext-plugin 用于在Gradle脚本中存储一些IntelliJ IDEA设置的插件 ...apply plugin: 'org.jetbrains.gradle.plugin.idea-ext' 如何使用 有关完整的DSL文档,请参见 。 1.0版要求IntelliJ IDEA 2020.3

    MainApp:andorid插件演示

    新建插件new module -> Phone & Tablet Module -> test2修改build.gradleapply plugin: 'com.android.application'//生成的apk名称ext.apkName="test2"//在as中的module名称ext.moduleName="test2"//插件拷贝以及...

Global site tag (gtag.js) - Google Analytics