事件机制

在读jquery的事件机制时, 发现了一个addEvent的库,jquery也是借鉴了这个库。  这位大佬是真滴牛逼呀, 必须要膜拜一下, 膜拜大佬

好了, 该拜的也拜了, 言归正传, 下面来看看这位大佬是怎么实现addEvent的

  function addEvent(el, type, handler) {
        if (!handler.$$uuid)  handler.$$uuid = addEvent.uuid++;
        if (!el.events)  el.events = {};
        var handlers = el.events[type];
        if (!handlers) {
            handlers = el.events[type] = {};
            if (el['on'+type]) {
                handlers[0] = el['on'+type];
            }
        }
        handlers[handler.$$uuid] = handler;
        el['on'+type] = handlerEvent;
  }

    addEvent.uuid = 1;

    function handlerEvent(e) {
        e = e || window.event;
        var handlers = this.events[e.type];
        for (var i in handlers) {
            handlers[i].call(this, e);
        }
    }

    function removeEvent(el, type, handler) {
        if (el.events && el.events[type]) {
            delete el.events[type][handler.$$uuid];
        }
    }

 经典永不落幕!

原文地址:https://www.cnblogs.com/wjyz/p/11062689.html