本例只是以学习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();
舞歌
相关分类