首页 新闻 会员 周边

关于js代码的继承和重载的问题

0
悬赏园豆:50 [已解决问题] 解决于 2012-02-24 12:41

有如下一个JS类a

var a = function(){

...

onDragEnd:function(){ ....N多代码}

};

现用b继承a,

b的代码中不写onDragEnd方法,则其onDragEnd将完全继承a的onDragEnd方法。

但是现在我想在onDragEnd方法前加一些判断逻辑

b = function(){

...

onDragEnd:function()

{

       --b自己的判断逻辑

     

        a中的....N多代码

}

}

问题,“...N多代码”这个能在B中不写吗,但能完全继承A中得功能,js中有没有c#中得base.onDragEnd()之类的写法? 求指教。

不然的话我又要把a中得代码复制到b中,感觉太不好了。

寒风吹过的主页 寒风吹过 | 初学一级 | 园豆:149
提问于:2012-02-22 11:36
< >
分享
最佳答案
0

可以这样试试:

var a=function(sColor){
return{
sayColor:function(){
alert(sColor);
}
}
}

var b=function(sColor){
var at=new a(sColor);
return{
sayColor:function(){
alert("more than b");//这里就是B特有的逻辑
at.sayColor();
}
}
}

var tempB=new b("black");
tempB.sayColor();
收获园豆:40
artwl | 专家六级 |园豆:16736 | 2012-02-22 12:16

不好意思,可能我描述的场景有点问题。

实际场景是这样:

有个第三方的js类库:Ext.Carousel(里面有个onDragStart事件)


然后我调用

var myView = = new Ext.Carousel(

{

       onDragStart: function(e)

      {

             --我想在此加点自己的代码

             --然后调用base.onDragStart(e);

       }

});

不知道有没有什么简单的方法。

寒风吹过 | 园豆:149 (初学一级) | 2012-02-22 12:56

@寒风吹过: 我也是JS初学者,水平不行哈,没什么好的方案,等高人出现

artwl | 园豆:16736 (专家六级) | 2012-02-22 13:04

@artwl: 谦虚了。那我JS就幼儿园了 呵呵,本来我想说我是初学者的.

寒风吹过 | 园豆:149 (初学一级) | 2012-02-22 13:18
其他回答(2)
0

楼上正解,把它当两个对象来处理。

收获园豆:5
az235 | 园豆:8483 (大侠五级) | 2012-02-22 12:46
0

不了解Ext的对象是否能取到事件handler,能取到就像artwl说的先生成一个原版的,把需要的事件handler存起来。因为只是这种通过传入{}生成对象的话,还真想不到什么好方法……

收获园豆:5
BetaRabbit | 园豆:267 (菜鸟二级) | 2012-02-22 14:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册