`

Ext中apply及applyIf方法的应用

    博客分类:
  • Ext
EXT 
阅读更多
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 dojochina Ext类静态方法.rar

    EXT dojochina Ext类...综上所述,EXT dojochina Ext类静态方法的主题涵盖了EXT框架中类和静态方法的核心概念,以及它们在实际开发中的应用。学习和熟练掌握这些知识点,将有助于提升你在EXT开发中的效率和代码质量。

    EXT核心API详解

    EXT核心API详解 1、Ext类 ………………………………… 2 2、Array类 …………………………… 4 3、Number类 …………………………… 4 4、String类 …………………………… 4 5、Date类 ……………………………… 5 ...

    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 当前...

    Ext-JS框架中文文档

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

    EXT核心API详解.doc

    3. **apply和applyIf**: `apply`方法用于将一个配置对象的所有属性复制到另一个对象,如果有`defaults`参数,也会将其属性复制过去。`applyIf`与`apply`类似,但只会复制目标对象尚未定义的属性。 4. **decode和...

    EXT JS 3.0 Core Class Diagram

    EXT JS 3.0 Core Class Diagram 是一个关于EXT JS库核心类结构的图表,它展示了EXT JS 3.0版本中的主要组件和它们之间的关系。EXT JS是一个强大的JavaScript库,主要用于构建富客户端Web应用程序,其核心功能包括...

    Ext.js核心函数详解.pdf

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

    Ext中文文档

    - **Ext.apply()与Ext.applyIf()**:这两个函数用于合并对象,帮助开发者更好地管理和更新组件的状态。 - **小结**:回顾了OOP在ExtJS中的应用,强调其对于构建复杂应用的重要性。 #### 第四章:消息框 - **消息框...

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

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

    Ext js2.1 最新资料汇总

    ### Ext JS 2.1 核心 API 详解 #### 1. `addBehaviors(Object obj):void` 此方法用于向指定的 DOM 元素添加事件监听器。...这些方法提供了丰富的功能,可以帮助开发者高效地构建复杂的 Web 应用程序。

    extjs核心api详解

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

Global site tag (gtag.js) - Google Analytics