转自http://linder0209.iteye.com/blog/876386
?
Ext中实现类的继承
-
extend?(Object?subclass,Object?superclass,[Object?overrides]?:?Object)??
?
第一个参数:子类
第二个参数:父类
第三个参数:要覆盖的属性。
这里需要强调一下,子类继承下来的是父类中通过superclass.prototype方式定义的属性(包括用此方法定义的函数),而不继承superclass中的定义的属性和方法,如果子类中的方法名与父类中相同则会覆盖。例子
??? 父类
-
BaseClass?=?
function
()?{??
-
?f1?=?function
()?{??
-
??alert("f1?in?base"
);??
-
?},??
-
?f2?=?function
()?{??
-
??alert("f2?in?base"
);??
-
?}??
-
}??
-
BaseClass.prototype?=?{??
-
?f3?:?function
()?{??
-
??alert("f3?in?base"
);??
-
?},??
-
?f4?:?function
()?{??
-
??alert("f4?in?base"
);??
-
?}??
-
};??
?
??? 子类
-
ChildClass?=?
function
()?{??
-
}??
-
??
-
Ext.extend(ChildClass,?BaseClass,?{??
-
???f1?:?function
()?{??
-
????alert("f1?in?child"
);??
-
???},??
-
???f3?:?function
()?{??
-
????alert("f3?in?child"
);??
-
???}??
-
??});??
?
??? 实例化
-
var
?b?=?
new
?ChildClass();??
-
b.f1();
??
-
??
-
b.f3();
??
-
b.f4();
??
?
????
补充:通过对 JavaScript 的原型继承的了解,可以知道,实例变量的优先级是高于 prototype 的,参见我之前写的文章javascript中静态方法、实例方法、内部方法和原型的一点见解
又如以下例子:
??? 父类