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
- }
// 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,写法如下:
- // 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).