你的位置:首页 > 软件开发 > Java > 优化模式

优化模式

发布时间:2017-11-23 11:00:59
初始化时分支,也称加载时分支是一种优化模式,当知道某个条件在整个程序生命周期内不会发生改变的时候,进队该条件测试一次是很有意义的。以事件监听代码为例: 1 var utils={ 2 addListener: function (el, type, fn) { 3 if(t ...

初始化时分支,也称加载时分支是一种优化模式,当知道某个条件在整个程序生命周期内不会发生改变的时候,进队该条件测试一次是很有意义的。

以事件监听代码为例:

 1 var utils={ 2  addListener: function (el, type, fn) { 3   if(typeof window.addEventListener==="function"){ 4    el.addEventListener(type,fn,false); 5   }else if(typeof window.attachEvent==="function"){ //IE浏览器 6    el.attachEvent("on"+type,fn); 7   }else{ //更早版本浏览器 8    el["on"+type]=fn; 9   }10  },11  removeListener: function (el, type, fn) {12   if(typeof window.removeEventListener==="function"){13    el.removeEventListener(type,fn,false);14   }else if(typeof window.detachEvent==="function"){15    el.detachEvent("on"+type,fn);16   }else{17    el["on"+type]=null;18   }19  }20 };

以上代码的问题在于效率比较低下,每次在调用addListener()或removeListener()时,都会重复地执行相同的检查

当使用初始化时分支的时候,可以在脚本初始化加载时一次性探测出浏览器特征。

修改后的代码如下:

 1 var utils={ 2  addListener:null, 3  removeListener:null 4 }; 5 if(typeof window.addEventListener==="function"){ 6  utils.addListener= function (el, type, fn) { 7   el.addEventListener(type,fn,false); 8  }; 9  utils.removeListener= function (el, type, fn) {10   el.removeEventListener(type,fn,false);11  };12 }else if(typeof window.attachEvent==="function"){13  utils.addListener= function (el, type, fn) {14   el.attachEvent("on"+type,fn);15  };16  utils.removeListener= function (el, type, fn) {17   el.detachEvent("on"+type,fn);18  };19 }else{20  utils.addListener= function (el, type, fn) {21   el["on"+type]=fn;22  };23  utils.removeListener= function (el, type, fn) {24   el["on"+type]=null;25  };26 }

分开嗅探浏览器特征,然后使用加载时分支仅执行一次嗅探。

原标题:优化模式

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录