美文网首页
JavaScript自定义事件

JavaScript自定义事件

作者: 萘小蒽 | 来源:发表于2019-04-18 11:15 被阅读0次

事件是与DOM交互的最常见方式,但他们也可以用于非DOM代码中,称为自定义事件,看上去有点node的event的味道。虽然说是非DOM代码,但它的存在也算是为DOM服务了。

概念

自定义事件的概念是创建一个管理事件的对象,让其他对象监听那些事件。

基本模式

function EventTarget(){
   this.handlers = {};    
}
EventTarget.prototype = { 
  constructor:EventTarget,
  addHandler:function(type,handler){
  //添加自定义事件类型,并推入类型对应的事件,无限添加。
     if(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){
    // 触发handlers中所有放进去的方法,参数为event
      var handlers = this.handlers[event.type];
      for (var i =0,i < handlers.length; i++){
         handlers[i](event); 
        }
      } 
   },
  removeHandler:function(type, handler){
    if(this.handlers[event.type] instanceof Array){
      //根据传入的事件类型,移除队列中对应的事件
      var handlers = this.handlers[type];
      for (var i =0,i < handlers.length; i++){
          if(handlers[i]===handler){
              break
           }
        }
       handlers.splice(i, 1);
      }
    }
};

相关文章

网友评论

      本文标题:JavaScript自定义事件

      本文链接:https://www.haomeiwen.com/subject/owhzwqtx.html