我很难理解Ext.extend函数的实现
它支持两种语法
Ext.extend(extendedClass, baseClass, overrides);
extendedClass = Ext.extend(baseClass, overrides);
因此它将参数标准化为
var oc = Object.prototype.constructor;
function(sb, sp, overrides){
if(Ext.isObject(sp)){
overrides = sp;
sp = sb;
sb = overrides.constructor != oc ?
overrides.constructor :
function(){sp.apply(this, arguments);};
我不明白的是sb
如果没有传入就会被创建。
检查overrides
是否为配置{}
>>> overrides = {a:1,b:2}
Object { a=1,b=2}
>>> overrides.constructor === Object.prototype.constructor
true
如果不是,则将extendedClass设置为overrides.constructor
否则,extendedClass为function(){sp.apply(this, arguments)
我阅读了使用或不使用new
http://js-bits.blogspot.com/2010/08/constructors-without-using-new.html
但是,在传递整个new
以扩展到baseClass的同时,将{@ 1}}中的function() { ... }
键盘作为函数调用baseClass意味着什么?
由于
整个功能看起来像这样
arguments