在读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]; } }
经典永不落幕!