js 不用重复检测浏览器提高效率

  这里以拿 添加事件示例

  

复制代码 代码如下:

  // 方式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 采用这种分支写法。