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

ExtJs继承
Javascript原始的继承写法:
Javascript代码 复制代码
// Traditional constructor:
Ext.Foo = function(config){
	// call superclass constructor:
    Ext.Foo.superclass.constructor.call(this, config);

    this.addEvents({
		// add events
    });
};
Ext.extend(Ext.Foo, Ext.Bar, {
   // class body
}


Extjs中替换constructor,写法如下:
Javascript代码 复制代码
// initComponent replaces the constructor:  
Ext.Foo = Ext.extend(Ext.Bar, {   
 initComponent : function(){   
 // call superclass initComponent   
  Ext.Container.superclass.initComponent.call(this);  
 this.addEvents({   
// add events   
  });   
  }   
}  

1. Ext.extend adds the superclass property to the prototype of subclass (=the prototype of class you are extending from).
2. Ext.extend also adds a constructor property to the prototype of the subclass (=the class itself). It also adds a contructor to the prototype of the superclass if it is an Object.
3. With method.call(obj) you can execute a method in a specified scope (this=obj).