apply及applyIf方法都是用于实现把一个对象中的属性应用于另外一个对象中,相当于属性拷贝。不同的是apply将会覆盖目标对象中的属性,而applyIf只拷贝目标对象中没有而源对象中有的属性。
apply 方法的签名为“apply( Object obj, Object config, Object defaults ) : Object”,该方法包含三个参数,第一个参数是要拷贝的目标对象,第二个参数是拷贝的源对象,第三个参数是可选的,表示给目标对象提供一个默认值。可以简单的理解成把第三个参数(如果有的话)及第二个参数中的属性拷贝给第一个参数对象。看下面的代码:
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方法时,在第三个参数中指定拷贝属性的默认值,比如下面的代码:
JAVASCRIPT:
Ext.apply(b2, b1, { p3: "p3 value" });
alert(b2.p3);
这样会使得b2中包含一个p3的属性,值为"p3 value"。
applyIf方法的功能跟apply一样,只是不会拷贝那些在目标对象及源对象都存在的属性。比如把前面演示apply方法的代码改成applyIf,如下:
JAVASCRIPT:
Ext.applyIf(b2, b1); b2.f1();
由于b2中已经存在了p2属性,因此,b2.f1()方法中引用this.p2的时候,得到的是"b2 value",而不是在b1中定义的"p2 value"。
相关推荐
- `Ext.applyIf()`: 类似于`Ext.apply()`,但只有当目标对象没有指定属性时,才会从源对象复制属性。 - `Ext.Array.from()`: 用于将各种类型的输入转换为数组,方便处理集合数据。 4. **静态方法的使用场景**:...
apply( Object obj, Object config, Object defaults ) : Object 从config拷贝所有的属性到obj,如果有defaults参数,也将拷贝其属性到obj applyIf( Object obj, Object config ) : Object 从config拷贝所有属性至obj...
- **Ext.apply() 和 Ext.applyIf()**: 这两个函数用于合并对象,它们在配置组件时非常有用。 2. **消息框** - **提示框**: 最简单的消息框类型,用于显示简单的提示信息。 - **输入框**: 允许用户输入文本的消息...
- **Ext.apply()与Ext.applyIf()**:这两个函数用于合并对象,是处理配置选项时常用的工具。 #### 四、消息框组件详解 - **消息框类型**:包括提示框、输入框、确认框以及进度条对话框等,它们提供了丰富的用户交互...
Component是EXT中表示UI组件的主要类,如按钮、表格等。 11. **getDoc**: 获取当前文档的Element对象。 12. **id**: 生成唯一的ID,可以指定前缀。如果元素已经有了ID,将不会改变。 13. **isEmpty**: 判断一个值...
EXTJS4自学手册——EXT基本方法、属性(apply、applyIf、constructor) EXTJS4自学手册——EXT基本方法、属性(mixins、statics、require) EXTJS4自学手册——EXT对象选择 二 Extjs 数据组件 EXTJS4自学手册——...
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 当前...
3. `Ext.applyIf(Object obj, Object config)`: 类似于`Ext.apply`,但只将`config`中对象`obj`尚未存在的属性添加到`obj`。这在希望保留已有属性而不覆盖它们时非常有用。 4. `Ext.addBehaviors(Object obj)`: 此...
- `Ext.applyIf()`: 如果目标对象的属性不存在,则将源对象的属性复制过去。 - `Ext.decode()`: 解码JSON字符串为JavaScript对象。 - `Ext.encode()`: 将JavaScript对象编码为JSON字符串。 - `Ext.extend()`: ...
- **Ext.apply()与Ext.applyIf()**:这两个函数用于合并对象,帮助开发者更好地管理和更新组件的状态。 - **小结**:回顾了OOP在ExtJS中的应用,强调其对于构建复杂应用的重要性。 #### 第四章:消息框 - **消息框...
**Ext.apply** 及 **Ext.applyIf** 方法是EXTJS框架中用于属性复制的两个重要工具。它们可以帮助开发者轻松地将一个对象的属性复制到另一个对象中,这对于初始化配置或合并选项非常有用。 - **Ext.apply**: - **...
- **`applyIf`**:与`apply`类似,但只复制`config`中`obj`没有定义的属性。 - **`decode`**:将JSON格式的字符串解码为JavaScript对象或数组。 ```javascript var jsonStr = '{"name":"John","age":30}'; var...
3. **Ext.applyIf()**: 类似于`Ext.apply()`,但只会将`config`中在`obj`中不存在的属性复制过去,避免覆盖已有的属性。 4. **Ext.addBehaviors()**: 这个方法允许你基于CSS选择器为页面元素添加事件监听器。例如,...
代码如下: reload : function(options){ this.load(Ext.applyIf(options||{}, this.lastOptions)); }, 代码如下: load : function(options) { options = Ext.apply({}, options); this.storeOptions(options); if...
与 `apply` 类似,但只会在 `obj` 中不存在相同属性时才复制 `config` 中的属性。 **示例代码:** ```javascript var obj = { name: 'John' }; var config = { name: 'Jane', age: 30 }; applyIf(obj, config); ...
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 ........