为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript中关于原型继承的问题

Javascript中关于原型继承的问题

天然 2016-01-07 16:44:36
本例只是以学习JS原型链为主,如果是对象封装或其他方法不在考虑。【想要实现】:父类调用 DOM0级事件处理程序,子类调用IE和DOM2级事件处理程序。实例化子类可以为元素节点添加事件和删除,如果不能满足则继续查找父类中的方法。【问题】 感觉是 this的问题。在线调试地址:http://jsbin.com/dahefo/1 //html  <input type='button' value='按钮' id='btn'> //基类 定义初始的DOM0级事件处理程序 function Basevent(ele,type,func){   this.ele=ele;   this.type=type; } Basevent.prototype={   constructor:Basevent,   addEvent:function(){    ele['on'+type]=func;//添加    },    removeEvent:function(){    ele['on'+type]=Null;//删除   }  }; //子类继承基类 定义DOM2级和IE兼容版本 function Subevent(ele,type,func){   Basevent.apply(this,arguments); } Subevent.prototype=Object.create(Basevent.prototype); Subevent.prototype={      constructor:Subevent,   //添加事件   addEvent:function(){     if(this.ele.addEventListener){ //DOM2级           this.ele.addEventListener(type,func,false);     }else{ //ele.atachEvent IE      alert(2);       this.ele.atachEvent('on'+type,func);     }   },   //删除事件   removeEvent:function(){     if(this.ele.removeEventListener){ //DOM2级       this.ele.removEventListener(type,func,false);     }else{ //ele.detachEvent IE       this.ele.detachEvent('on'+type,func);     }      }     }; /*********************/ var btn=document.getElementById('btn'); function showMes(){   alert('执行了一个点击事件!'); } var demo=new Subevent(btn,'click',showMes); demo.addEvent();
查看完整描述

1 回答

?
舞歌

TA贡献8条经验 获得超1个赞

Subevent.prototype=Object.create(Basevent.prototype); Subevent.prototype={……} 这个,你把Subevent的原型赋值了一个新的对象,就不能去继承Basevent.prototype了,可以改为 Subevent.prototype={……} Object.setPrototypeOf(Sbevent.prototype,Basevent.prototype) 这样就把原型对象加上了。
查看完整回答
1 反对 回复 2017-04-22
  • 1 回答
  • 1 关注
  • 1327 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信