日期:2014-05-16  浏览次数:20318 次

ExtJs中继承的实现与理解—extend

引自linda0209

EXTprototypeJavaScriptF#IE

以下总结参考网络上资源

?

extend?(Object?subclass,Object?superclass,[Object?overrides]?:?Object)??

extend (Object subclass,Object superclass,[Object overrides] : Object)

?
第一个参数:子类
第二个参数:父类
第三个参数:要覆盖的属性。
这里需要强调一下,子类继承下来的是父类中通过superclass.prototype方式定义的属性(包括用此方法定义的函数),而不继承superclass中的定义的属性和方法,如果子类中的方法名与父类中相同则会覆盖。例子

??? 父类

Js代码 复制代码
  1. BaseClass?=?function()?{ ??
  2. ?f1?=?function()?{ ??
  3. ??alert("f1?in?base"); ??
  4. ?}, ??
  5. ?f2?=?function()?{ ??
  6. ??alert("f2?in?base"); ??
  7. ?} ??
  8. } ??
  9. BaseClass.prototype?=?{ ??
  10. ?f3?:?function()?{ ??
  11. ??alert("f3?in?base"); ??
  12. ?}, ??
  13. ?f4?:?function()?{ ??
  14. ??alert("f4?in?base"); ??
  15. ?} ??
  16. };??
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");
 }
};

?
??? 子类

Js代码 复制代码
  1. ChildClass?=?function()?{ ??
  2. } ??
  3. //?继承 ??
  4. Ext.extend(ChildClass,?BaseClass,?{ ??
  5. ???f1?:?function()?{ ??
  6. ????alert("f1?in?child"); ??
  7. ???}, ??
  8. ???f3?:?function()?{ ??
  9. ????alert("f3?in?child"); ??
  10. ???} ??
  11. ??});??
ChildClass = function() {
}
// 继承
Ext.extend(ChildCla