优化模式
2018-06-24 00:52:02来源:未知 阅读 ()
初始化时分支,也称加载时分支是一种优化模式,当知道某个条件在整个程序生命周期内不会发生改变的时候,进队该条件测试一次是很有意义的。
以事件监听代码为例:
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 }
分开嗅探浏览器特征,然后使用加载时分支仅执行一次嗅探。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- javascript设计模式 接口介绍 2019-09-23
- 前端笔记之微信小程序(二){{}}插值和MVVM模式&数 2019-08-14
- 前端js性能优化的要点 2019-08-14
- [Vue 牛刀小试]:第十五章 - 传统开发模式下的 axios 使用入 2019-08-14
- [JS设计模式]:观察者模式(即发布-订阅者模式)(4) 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash