js性能优化之惰性加载函数
2017-04-26 11:33
761 查看
一个普通的浏览器嗅探技术,每次都要调用addEvent进行判断,执行if语句。
另一个加载技术,通过立即执行函数,加载的时候立即执行addEvent(),并且根据浏览器的不同返回一个新的匿名函数
惰性加载函数,相当于重新封装一次addEvent,页面一加载就加载addEvent函数,这个跟前面的很像,只不过是在函数内部重写addEvent
// 浏览器嗅探技术:指的就是检测浏览器是否支持 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() { if (window.addEventListener) { return function(elem, type, handler) { elem.addEventListener(type, handler, false) //webkit、os } } if (window.attachEvent) { return function(elem, type, handler) { elem.attachEvent('on' + type, handler) //IE浏览器 }; } })()
惰性加载函数,相当于重新封装一次addEvent,页面一加载就加载addEvent函数,这个跟前面的很像,只不过是在函数内部重写addEvent
<body> <div id="div1">div1</div> </body> <script type="text/javascript"> var addEvent = function(elem, type, handler) { if (window.addEventListener) { addEvent = function(elem, type, handler) { console.log('chrome addEvent'); elem.addEventListener(type, handler, false) } } else if (window.attachEvent) { addEvent = function(elem, type, handler) { console.log('ie addEvent'); elem.attachEvent('on' + type, handler) } } addEvent(elem, type, handler) } var div = document.getElementById('div1'); addEvent(div, 'click', function() { alert(1); }) addEvent(div, 'click', function() { alert(2) }) </script>
相关文章推荐
- js优化之惰性加载函数
- js性能优化 如何更快速加载你的JavaScript页面
- AngularJS ui-router 用resolve、service预先加载数据写法,属于优化性能方面吧
- js性能优化之分时函数
- js性能优化之函数节流(分流函数)
- 性能优化:如何更快速加载你的JS页面
- js中优化window.onload使页面完成时同时加载多个函数
- 性能优化——异步加载js文件
- JS优化与惰性载入函数实例分析
- 提升性能JS函数小技巧:惰性载入函数
- js性能优化之函数缓存
- Web性能优化:延迟加载JS
- js性能优化 如何更快速加载你的JavaScript页面
- JS加载性能优化
- JavaScript-JS优化与惰性载入函数
- 前端性能优化--延迟加载js、css、图片等组件
- 性能优化——CSS和JS的加载和执行
- js性能优化之函数节流
- JS性能优化 -- 函数节流
- 移动端性能优化动态加载JS、CSS