在web开发中,因为浏览器之间的实现差异,一些嗅探工作总是不可避免。
var addEvent = function( elem, type, handler ){if ( window.addEventListener ){return elem.addEventListener( type, handler, false );}if ( window.attachEvent ){return elem.attachEvent( 'on' + type, handler );}};
这个函数的缺点是,当它每次被调用的时候都会执行里面的if条件分支。
下面这个函数虽然仍然有一些分支判断,但是在第一次进入条件分支之后,在函数内部就会重写这个函数,重写之后的函数就是我们希望的addEvent函数。
var addEvent = function(ele,type,handler){if(window.addEventListener){addEvent = function(ele,type,handler){elem.addEventListener( type, handler, false );}}if(window.attachEvent){addEvent = function(ele,type,handler){elem.attachEvent( 'on' + type, handler );}}addEvent(ele,type,handler);}