第一种写法
里面的if分支只会执行一次,返回的函数里面已经不包含浏览器判断了,所以相对于常规写法,已经很棒了
var addEvent = (function(){
if(window.addEventListener){
return function(elem, type, handler){
elem.addEventListener(type, handler, false);
};
}else if(window.attachEvent){
return function(elem, type, handler){
elem.attachEvent('on' + type, handler)
};
}
})();
第二种写法
在第一次进入if判断后,重写了addEvent函数,这样后续的addEvent也不包含分支判断语句了,感觉跟第一种写法并没有多大的区别,但是第二种写法被称为惰性载入函数,可是我并没有感觉他比第一种方式惰在哪里啊?相较来说,我更喜欢第一种方式,求解释
var addEvent = function(elem, type, handler){
if(window.addEventListener){
addEvent = function(elem, type, handler){
elem.addEventListener(type, handler, false);
};
}else if(window.attachEvent){
addEvent = function(elem, type, handler){
elem.attachEvent('on' + type, handler);
};
}
addEvent(elem, type, handler);
};
说的很清楚,谢谢!
Samhanx