ExtJS继承无法覆盖父类方法的问题

对于继承,刚刚实然想明白了一个问题,想明白了,觉得自己有点搞笑了。在开发的时候,有时要用到这个dom对象的父对象,我之前一直是用 dom的 parent的想法来想ExtJS,所以在查找它的API的时候,总是在想,为什么它的API里没有提供getParent 这样类似的方法呢,刚刚实然想通了,ExtJS是通过extend来作继承的,就如同Java中的extends,那就完全不需要getParnet这样的方法了,子类已经完全有了父类的方法与属性了,还要parent作什么呢。

在某本书里看到,ExtJS的继承方式有两种写法:

一种是:

classsB = function(config) {
    classB.superclass.constructor.call(this,config);
};

Ext.extend(classB, classA );

还有一种是:

Ext.extend(classB,classA,{

constructor:function(config){

classB.superclass.constructor.call(this,config);

}

});

就我在开发中遇到的问题来看,第一种是比较好的,第二种会有一些问题

再说一下对于重写父类里的方法和属性的问题:

如果是第一种写法,写在call里的方法,并不能覆盖父类里的方法,写在extend里的就可以,但是,写在extend里时,会遇到一个问题,当覆盖父类方法的时候,想要通过this拿到当前类的对象,如classB的对象,就很困难,所以,对于覆盖父类的方法,还是写在classB里比较好,通过,this.method = function(config){}这样,就可以直接覆盖父类的方法。

就本人而言,更喜欢通过这种方式来重写父类的方法与属性,因为这样写与java的继承和重写就十分像了,Java中是通过extends来继承的,这样写也是通过Ext.extend来继承,

call就像是Java中的构造器,最重要的,覆盖的方法与属性,与java覆盖时的地方都是一样的,都在子类里。

对于ExtJS,要抛弃掉dom这个概念,将ExtJS想像成Java,才能够更好的理解他的继承与实现时遇到的一些问题,当这些问题想清楚了,才会发现这些问题解决起来是如此的简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值