拿添加事件示例
- // 方式1
- function addEvent(el, type, fn){
- if (el.addEventListener){
- el.addEventListener(type, fn, false );
- } else {
- el.attachEvent( 'on' +type, fn)
- }
- }
- // 方式2
- var addEvent = document.addEventListener ?
- function (el, type, fn) {el.addEventListener(type, fn, false );} :
- function (el, type, fn) {el.attachEvent( 'on' +type, fn)};
// 方式1 function addEvent(el, type, fn){ if(el.addEventListener){ el.addEventListener(type, fn, false); }else{ el.attachEvent('on'+type, fn) } } // 方式2 var addEvent = document.addEventListener ? function(el, type, fn) {el.addEventListener(type, fn, false);} : function(el, type, fn) {el.attachEvent('on'+type, fn)};
方式1在函数内做判断,每次给元素添加事件都需判断一次,效率相对低一些。
jQuery 1.6.1/Prototype 1.7/Mootools 1.3/tangram 1.3.6/reg.js/right.js都是采用这种分支方式。
方式2使用了两个匿名函数,仅在初始化时判断一次,后每次调用无须判断。效率相对高一些。
Ext/kissy/qwrap 采用这种分支写法。