`
usenrong
  • 浏览: 517418 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Ext.apply Ext.applyif 的理解

阅读更多
Ext.apply、 Ext.applyIf和Ext.extend:Ext.apply(obj, config, [defaults]) 将config对象的所有属性都复制到另一个对象obj上, 第三个参数defaults可以用来提供默认值, 不过通常指用前两个参数就够了。 这个函数主要用在构造函数中, 用来将配置复制到对象上。
 Ext.applyIf(obj, config) 和Ext.apply的功能类似, 唯一不同的是, 这个函数只会将config对象中有, 而obj对象中没有的属性复制到obj上。 Ext.extend(subclass, superclass, [overrides]) 用来继承已有的类, 通常的使用方法是 var SubClass = function() { SubClass.superclass.constructor.call(this); };
Ext.extend(SubClass, BaseClass, { newMethod : function() {}, overriddenMethod : function() {} };在上面的代码中, SubClass继承自BaseClass, 添加了新的方法newMethod, 重写了overriddenMethod方法。
apply方法的签名为“apply( Object obj, Object config, Object defaults ) : Object”,
第一个参数是要拷贝的目标对象,
第二个参数是拷贝的源对象,
第三个参数是可选的,表示给目标对象提供一个默认值。
可以简单的理解成把第三个参数(如果有的话)及第二个参数中的属性拷贝给第一个参数对象。
Ext源代码如下:
view plaincopy to clipboardprint?
/** 
 * Copies all the properties of config to obj. 
 * @param {Object} obj The receiver of the properties 
 * @param {Object} config The source of the properties 
 * @param {Object} defaults A different object that will also be applied for default values 
 * @return {Object} returns obj 
 * @member Ext apply 
 */ 
Ext.apply = function(o, c, defaults){  
    // no "this" reference for friendly out of scope calls  
    if(defaults){  
        Ext.apply(o, defaults);  
    }  
    if(o && c && typeof c == 'object'){  
        for(var p in c){  
            o[p] = c[p];  
        }  
    }  
    return o;  
}; 
/**
 * Copies all the properties of config to obj.
 * @param {Object} obj The receiver of the properties
 * @param {Object} config The source of the properties
 * @param {Object} defaults A different object that will also be applied for default values
 * @return {Object} returns obj
 * @member Ext apply
 */
Ext.apply = function(o, c, defaults){
    // no "this" reference for friendly out of scope calls
    if(defaults){
        Ext.apply(o, defaults);
    }
    if(o && c && typeof c == 'object'){
        for(var p in c){
            o[p] = c[p];
        }
    }
    return o;
};
另外还有ext.applyif 也是对象克隆,不同的是,克隆的对象并不会覆盖原有属性和方法
具体代码如下:
view plaincopy to clipboardprint?
applyIf : function(o, c){  
          if(o){  
              for(var p in c){  
                  if(!Ext.isDefined(o[p])){  
                      o[p] = c[p];  
                  }  
              }  
          }  
          return o;  
      }, 
分享到:
评论

相关推荐

    Ext.js核心函数详解.pdf

    3. `Ext.applyIf(Object obj, Object config)`: 类似于`Ext.apply`,但只将`config`中对象`obj`尚未存在的属性添加到`obj`。这在希望保留已有属性而不覆盖它们时非常有用。 4. `Ext.addBehaviors(Object obj)`: 此...

    EXT核心API详解

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

    EXT dojochina Ext类静态方法.rar

    - `Ext.applyIf()`: 类似于`Ext.apply()`,但只有当目标对象没有指定属性时,才会从源对象复制属性。 - `Ext.Array.from()`: 用于将各种类型的输入转换为数组,方便处理集合数据。 4. **静态方法的使用场景**:...

    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-API中的一些重要的详解文档

    3. **Ext.applyIf()**: 类似于`Ext.apply()`,但只会将`config`中在`obj`中不存在的属性复制过去,避免覆盖已有的属性。 4. **Ext.addBehaviors()**: 这个方法允许你基于CSS选择器为页面元素添加事件监听器。例如,...

    extjs帮助文档

    - `Ext.apply(object, properties)`:将一个或多个属性对象合并到目标对象中。 - `Ext.applyIf(object, defaults)`:如果目标对象中的属性不存在,则将其添加。 - `Ext.extend(subClass, superClass[, overrides]...

    EXT JS 3.0 Core Class Diagram

    EXT JS 3.0的核心类图揭示了这个库如何组织和交互,帮助开发者理解其内部工作原理,更有效地利用EXT JS构建动态、交互性强的Web应用。通过这些类和方法,开发者可以轻松地进行DOM操作、事件处理、数据绑定,以及创建...

    EXTJS学习笔记

    **Ext.apply** 及 **Ext.applyIf** 方法是EXTJS框架中用于属性复制的两个重要工具。它们可以帮助开发者轻松地将一个对象的属性复制到另一个对象中,这对于初始化配置或合并选项非常有用。 - **Ext.apply**: - **...

    Ext深入浅出 数据传输

    11.1.6 apply和applyIf函数..........266 11.1.7 namespace函数.....................266 11.1.8 Ext.isEmpty函数.................267 11.1.9 Ext.each函数........................268 11.1.10 Ext.DomQuery ........

    Ext-JS框架中文文档

    - **Ext.apply() 和 Ext.applyIf()**: 这两个函数用于合并对象,它们在配置组件时非常有用。 2. **消息框** - **提示框**: 最简单的消息框类型,用于显示简单的提示信息。 - **输入框**: 允许用户输入文本的消息...

    extjs核心api详解

    文章最后提到了Ext类的一些常用方法,如addBehaviors、apply、applyIf、decode、destroy、each、encode、escapeRe、extend、fly、get、getBody、getCmp等。这些方法提供了丰富的功能,如事件绑定、对象拷贝、JSON...

    ExtJs 中文文档

    - **Ext.apply() 和 Ext.applyIf()**:这两个函数用于合并对象。`Ext.apply()` 会覆盖目标对象的属性,而 `Ext.applyIf()` 只会在目标对象没有该属性时添加。 #### 四、消息框 - **提示框**:用于显示简单的消息...

    extjs学习笔记

    #### 五、Ext.apply & Ext.applyIf 区别 - **Ext.apply**:将一个对象中的属性复制到另一个对象中。 - `apply(object, config, defaults)` - `object` (Object):目标对象。 - `config` (Object):源对象。 - `...

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

    代码如下: reload : function(options){ this.load(Ext.applyIf(options||{}, this.lastOptions)); }, 代码如下: load : function(options) { options = Ext.apply({}, options); this.storeOptions(options); if...

    Ext中文教程.最好的Ext学习资料

    - **Ext.apply()与Ext.applyIf()**:这两个函数用于合并对象,是处理配置选项时常用的工具。 #### 四、消息框组件详解 - **消息框类型**:包括提示框、输入框、确认框以及进度条对话框等,它们提供了丰富的用户交互...

    Extjs中文教程2.x

    **2.5 Ext.apply() 和 Ext.applyIf()** - **Ext.apply()**: 合并多个对象到目标对象中,后者的属性优先。 - **Ext.applyIf()**: 只有当目标对象没有某个属性时才合并。 #### 三、消息框 **3.1 消息框简介** - **...

    EXT核心API详解.pdf

    - **`applyIf`**:与`apply`类似,但只复制`config`中`obj`没有定义的属性。 - **`decode`**:将JSON格式的字符串解码为JavaScript对象或数组。 ```javascript var jsonStr = '{"name":"John","age":30}'; var...

    轻松搞定ExtJS

    - **Ext.apply()和Ext.applyIf()**:这两个方法用于合并对象属性,前者会覆盖已有的属性值,后者则不会。 #### 第四章:消息框 - **消息框的使用**:全面介绍了Extjs中提供的不同类型的消息框,包括提示框、输入框...

Global site tag (gtag.js) - Google Analytics