js自定义事件
来源:互联网 发布:c语言int main void 编辑:程序博客网 时间:2024/06/04 18:09
<script type="text/javascript"> //自定义事件;事件是一种叫做观察者的设计模式 function EventTarget(){ this.handlers={};//函数处理器数组 } EventTarget.prototype={ constructor:EventTarget,//手动指定constructor为EventTarget addHandler:function(type,handler){//添加一个事件处理器 if(typeof this.handlers[type] == "undefined"){ this.handlers[type]=[]; } this.handlers[type].push(handler); }, fire:function(event){//触发事件 if(!event.target){ event.target=this; } if(this.handlers[event.type] instanceof Array){ var handlers=this.handlers[event.type]; for(var i=0,len=handlers.length;i<len;i++){ handlers[i](event); } } }, removeHandler:function(type,handler){//删除事件处理器 if(this.handlers[type] instanceof Array){ var handlers=this.handlers[type]; for(var i=0,len=handlers.length;i<len;i++){ if(handlers[i]===handler){ break; } } handlers.splice(i,1);//删除指定的handler处理器 } } } function handleMessage(event){ alert(event.message); } var event_target=new EventTarget(); event_target.addHandler("message", handleMessage); //event_target.removeHandler("message", handleMessage); event_target.fire({type:"message",message:"hello world!"}); </script>