美文网首页
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