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

[Extjs项目开发必须知道的技术之一]--apply和applyif

阅读更多

      目前本人在做公司项目的前台框架的升级工作,前台框架使用的是Extjs2,目前需要将框架升级到Extjs4。虽然之前使用Extjs大概快2年啦,但是因为一直没有太多的时间对一些知识点或者关键技术进行深入研究,本人也想写一点自己的积累或者见解,一直也无从下手。所以这次就以升级框架作为契机,深入的对ext的技术点进行研究,希望与大家一起分享。在这个过程中我也会把一些经常遇到知识进行归类、整理、总结。

Extjs项目开发必须知道的技术之一:apply和applyif

apply方法apply( Object obj, Object config, Object defaults );

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

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

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

 

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

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;
}; 

 

 

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;   
      },  

  

 

 

分享到:
评论

相关推荐

    轻松搞定Extjs

    - **Ext.apply()和Ext.applyIf()**: 这两个方法用于合并对象属性,是Extjs中常用的设计模式之一。 #### 消息框 消息框是与用户交互的重要手段之一。本章详细介绍了Extjs提供的多种消息框类型及其使用方法。 - **...

    Extjs中文教程

    - SpketIDE是一款支持Extjs开发的集成开发环境。 - 它提供了代码高亮、智能提示、项目管理等功能,大大提高了开发效率。 ##### 5. 资源 - 收集并整理相关文档、教程、API参考资料等,以便在开发过程中随时查阅。 - ...

    ExtJs-API中的一些重要的详解文档

    ExtJS 是一个强大的JavaScript库,主要用于构建富客户端的Web应用程序。API中包含许多核心功能,如组件、布局、数据绑定和事件处理等。以下是一些关键的ExtJS API知识点: 1. **Ext.apply()**: 这个方法用于将一个...

    Extjs核心api详解

    ### Extjs核心API详解 #### 一、Extjs概述与基础API Extjs是一个功能强大的JavaScript...通过了解这些API,我们可以更高效地使用Extjs开发Web应用程序。接下来的部分将会深入探讨更多高级API,如组件、数据管理等。

    轻松搞定ExtJS.pdf

    - **SPKET IDE**: 一个专门用于开发ExtJS项目的集成开发环境(IDE),提供了代码提示、调试等功能。 - **资源**: - 官方文档。 - 社区论坛。 - 示例代码。 #### 3. ExtJS OOP基础 - **JavaScript类定义**: 使用`...

    ExtJs 中文文档

    - **ExtJS** 是一种非常流行的富客户端技术,它主要用于构建复杂的桌面式 Web 应用程序。 - **特点**: - 提供了丰富的 UI 组件库。 - 强大的数据处理能力。 - 支持各种浏览器兼容性问题。 - 高度可定制的界面...

    Extjs学习带注释

    - **Ext.apply() 和 Ext.applyIf()**:这些方法用于合并对象,是进行配置和初始化时常用的工具。 - **小结**:回顾并总结 Extjs 的基础知识,为后续的学习打下坚实的基础。 #### 四、消息框 - **基本概念**:了解...

    Extjs中文教程(初学者适合)

    - **Ext.apply()和Ext.applyIf()**: 这两个方法用于合并对象,其中`Ext.apply()`会覆盖已有属性,而`Ext.applyIf()`则不会。 #### 四、消息框 - **提示框**: 最简单的消息框,通常用于显示简单的提示信息。 - **...

    ExtJs中文教程

    - Panel是ExtJs中最常用的容器组件之一。 2. **Ext.Panel类** - 详细说明Panel组件的配置和使用。 #### 十四、Panel的子类——Window窗口 1. **Window窗口概述** - Window是Panel的一个特殊子类,用于创建弹出式...

    轻松搞定ExtJS

    - **Ext.apply()和Ext.applyIf()**:介绍了这两个函数的作用和使用场景,帮助开发者更好地理解和使用ExtJS的配置机制。 ##### 第四章:消息框 - **话说消息框**:讨论了在Web应用中使用消息框的重要性及其应用场景...

    extjs核心api详解

    这些方法提供了丰富的功能,如事件绑定、对象拷贝、JSON编码解码、DOM操作、组件管理等,是extjs开发中不可或缺的一部分。 总之,extjs核心api详解是一个全面而深入的指南,它不仅介绍了extjs的基本概念和api,还...

    ExtJs中文文档.pdf

    此外,还详细解释了`Ext.apply()`和`Ext.applyIf()`函数的作用,这些是理解ExtJs内部工作原理的关键。 四、消息框组件 消息框是ExtJs中用于与用户交互的重要组件,文档通过多个实例讲解了如何创建提示框、输入框、...

    Ext-JS框架中文文档

    该框架最初由Sencha公司开发,由于其出色的性能和丰富的功能,已经成为前端开发领域内非常受欢迎的选择之一。 #### 二、ExtJS中文文档的重要性 对于很多中文开发者来说,官方提供的英文文档可能不是那么容易理解。...

    Extjs中文教程2.x

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

    EXTJS学习笔记

    通过以上介绍,我们可以看出EXTJS不仅提供了一系列实用工具来帮助开发者编写高效、结构化的代码,还提供了强大的类继承机制,使得开发过程更加灵活和模块化。希望这些知识点能够帮助初学者更好地理解和使用EXTJS框架...

Global site tag (gtag.js) - Google Analytics