override : function(origclass, overrides){//方法重载,不存在就添加,存在就覆盖原有方法
if(overrides){
var p = origclass.prototype;
Ext.apply(p, overrides);//调用apply继承
if(Ext.isIE && overrides.hasOwnProperty('toString')){
p.toString = overrides.toString;
}
}
},
extend : function(){//Ext继承并扩展
// inline overrides
var io = function(o){//把所以属性复制给io
for(var m in o){
this[m] = o[m];
}
};
var oc = Object.prototype.constructor;//Object的构造函数
return function(sb, sp, overrides){
if(typeof sp == 'object'){//当父类为object对象
overrides = sp;//需要继承的
sp = sb;
//为继承类设置构造函数
sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
}
var F = function(){},
sbp,
spp = sp.prototype;
F.prototype = spp;
sbp = sb.prototype = new F();
sbp.constructor=sb;
sb.superclass=spp;
if(spp.constructor == oc){
spp.constructor=sp;
}
sb.override = function(o){
Ext.override(sb, o);
};
sbp.superclass = sbp.supr = (function(){
return spp;
});
sbp.override = io;
Ext.override(sb, overrides);
sb.extend = function(o){return Ext.extend(sb, o);};
return sb;
};
}()
extjs源码分析-006(Ext.override/Ext.extend)
最新推荐文章于 2015-07-28 17:32:00 发布