当前位置: 代码迷 >> JavaScript >> Ext.extend的理解
  详细解决方案

Ext.extend的理解

热度:475   发布时间:2013-12-09 21:47:09.0

通常的继承都是在一个已经存在的类上面定义特殊的方法。从而产生一个更加强大的类。就更自然界的演变一样,新的物种通常会有比祖先更加强大的适应生存能力。然而,初次查看Ext api时,对Ext.extend方法有点误解。

如果我们定义一个类Father的子类Child时,在java中通常只是使用class Child extends Father{/*子类成员和方法*/},然而在Ext中,似乎没这么简单。看api似乎要这么写

Ext.extend(Child,Father)。这里有个疑问,就是通常我想在定义子类就把扩展的属性和方法都写上。可是这个方法似乎要在继承之前先定义Child。仔细查询了一下,其实extend方法2个参数的调用方法可以完成我的要求。就是说,extend方法接收2个参数时,它将认为这是后两个参数。api如下:

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

如果你传递2个参数,比如像下面:

child = Ext.extend(Father,{
   constructor: function(config) {
      // Your preprocessing here
       MyGridPanel.superclass.constructor.apply(this, arguments);
      // Your postprocessing here
   },

   yourMethod: function() {
      // etc.
   }
}).

那么,Father参数会被解释成父类。后面的一个对象将被解释成子类的定义。这里需要注意的是方法construcor,如果你不定义这个方法的话,extend方法将返回父类的constructor方法。这里可能就是Father的构造方法。