extjs中apply和applyIf的用法
类别:Web前端 浏览量:7990
时间:2013-11-1 extjs中apply和applyIf的用法
extjs中apply和applyIf的用法apply
方法的签名
apply( Object obj, Object config, Object defaults ) : Object
参数说明
第一个参数是要复制的目标对象;第二个参数是复制的源对象;第三个参数是默认源对象,第三个参数是可选的,意味着如果第三个参数有值,则将第三个参数也复制到目标对象中
apply定义的源代码
Ext.apply = function(object, config, defaults) {
if (defaults) {
Ext.apply(object, defaults);
}
if (object && config && typeof config === 'object') {
var i, j, k;
for (i in config) {//复制所有属性
object[i] = config[i];
}
if (enumerables) {
for (j = enumerables.length; j--;) {
k = enumerables[j];
if (config.hasOwnProperty(k)) {
object[k] = config[k];
}
}
}
}
return object;
};
apply实例
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();
可以在调用apply方法时,在第三个参数中指定拷贝属性的默认值,比如下面的代码
Ext.apply(b2,b1,{p3:"p3 value"});
alert(b2.p3);
这样会使得b2中包含一个p3的属性,值为"p3 value"。
applyIf
功能跟apply一样,只是不会拷贝那些在目标对象及源对象都存在的属性。
定义的源代码
applyIf: function(object, config) {
var property;
if (object) {
for (property in config) {
if (object[property] === undefined) {//如果object中不含有这个属性,复制属性,否则不复制
object[property] = config[property];
}
}
}
return object;
},
applyIf实例:
比如把前面演示apply方法的代码改成applyIf,如下:
Ext.applyIf(b2,b1);b2.f1();
由于b2中已经存在了p2属性,因此,b2.f1()方法中引用this.p2的时候,得到的是"b2 value",而不是在b1中定义的"p2 value"。
您可能感兴趣
- extjs xtype的使用
- extjs tabPanel的用法
- extjs中treepanel属性和方法
- extjs实现树形下拉框
- extjs中Toolbar工具栏
- extjs checkboxGroup 复选框的用法
- Extjs中FieldSet的收缩和展开
- extjs accordion折叠布局
- extjs table布局
- extjs anchor 锚点布局
- ExtJs中XTemplate使用
- ExtJs常用代码片段
- ExtJs 中Viewport 的使用
- Extjs updateProgress进度条的应用
- Extjs menu菜单的简单用法
- ExtJs中getCmp、getDom、Get的区别
- 《倚天屠龙记》再遭翻拍,关晓彤主演赵敏,蒋劲夫演张无忌,你怎么看(倚天屠龙记再遭翻拍)
- 吴启华与曾舜晞两代张无忌同框,戏里经典的他却没活出原著的潇洒(吴启华与曾舜晞两代张无忌同框)
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
- 有种尴尬叫朋友圈忘屏蔽,大学生上演社死现场,父母亲自下场吐槽(有种尴尬叫朋友圈忘屏蔽)
- 朋友圈屏蔽你的人,可以直接看淡了(朋友圈屏蔽你的人)
- 金球奖只青睐那些会戴珠宝的女人(金球奖只青睐那些会戴珠宝的女人)