`

ExtJS:Ext中apply及applyIf

 
阅读更多
Ext中apply及applyIf

apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝。不同的是apply将会覆盖目标对象中的属性,而applyIf只拷贝目标对象中没有而源对象中有的属性。

apply 方法的签名为“apply( Object obj, Object config, Object defaults ) : Object”,该方法包含三个参数,第一个参数是要拷贝的目标对象,第二个参数是拷贝的源对象,第三个参数是可选的,表示给目标对象提供一个默认值。可以简单的理解成把第三个参数(如果有的话)及第二个参数中的属性拷贝给第一个参数对象。看下面的代码:

PLAIN TEXT

JAVASCRIPT:



var b1 = {
    p1: "p1 value",
    p2: "p2 value",
    f1: function() { alert(this.p2) }
};
var b2 = new Object();
b2.p2 = "b2 value";
Ext.apply(b2, b1);
b2.f1();

在上面的代码中,Ext.apply(b2,b1)这一语句把b1的属性拷贝到了b2对象中,因此调用b2的f1方法可以弹出"p2 value"的提示信息。尽管b2对象已经包含了p2属性值,但拷贝后该属性值会被覆盖。可以在调用apply方法时,在第三个参数中指定拷贝属性的默认值,比如下面的代码:

PLAIN TEXT

JAVASCRIPT:



Ext.apply(b2, b1, { p3: "p3 value" });
alert(b2.p3);

这样会使得b2中包含一个p3的属性,值为"p3 value"。
applyIf方法的功能跟apply一样,只是不会拷贝那些在目标对象及源对象都存在的属性。比如把前面演示apply方法的代码改成applyIf,如下:

PLAIN TEXT

JAVASCRIPT:



Ext.applyIf(b2, b1);
b2.f1();

由于b2中已经存在了p2属性,因此,b2.f1()方法中引用this.p2的时候,得到的是"b2 value",而不是在b1中定义的"p2 value"。
分享到:
评论

相关推荐

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

    EXTJS4自学手册

    EXTJS4自学手册——EXT基本方法、属性(apply、applyIf、constructor) EXTJS4自学手册——EXT基本方法、属性(mixins、statics、require) EXTJS4自学手册——EXT对象选择 二 Extjs 数据组件 EXTJS4自学手册——...

    extjs帮助文档

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

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

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

    Ext-JS框架中文文档

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

    EXTJS学习笔记

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

    Extjs核心api详解

    在Extjs的核心API中,`Ext`类是最基本的类,它包含了一系列的基础方法,这些方法在构建复杂应用时非常有用。 - **`addBehaviors`**:此方法用于为DOM元素添加事件监听器。该方法接受一个对象作为参数,其中键表示...

    Extjs中文教程2.x

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

    extjs中文教程

    这部分介绍ExtJS面向对象编程(OOP)的基础知识,包括JavaScript类的定义、ExtJS命名空间的使用、ExtJS的类继承、配置选项、以及ExtJS的实用工具函数如Ext.apply()和Ext.applyIf()。这些基础知识点是学习ExtJS的基石...

    轻松搞定Extjs

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

    Extjs中文教程

    - **`Ext.apply()`与`Ext.applyIf()`**:这两个方法用于合并对象,`Ext.apply()`会覆盖已存在的键值,而`Ext.applyIf()`只会在目标对象中不存在该键时才进行设置。 #### 三、消息框 - **提示框**:最简单的消息框...

    extjs核心api详解

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

    轻松搞定ExtJS.pdf

    - **`Ext.apply()`和`Ext.applyIf()`**: - `Ext.apply()`用于合并对象,新对象会覆盖旧对象中的同名属性。 - `Ext.applyIf()`只有当目标对象中没有相应属性时才会添加。 #### 4. 消息框 - **提示框**: 显示简单...

Global site tag (gtag.js) - Google Analytics