惰性加载函数

处理 IE 兼容性问题时,一般会进行一些嗅探操作,如何更好的解决这个问题呢?

例如下面自定义绑定事件函数:

标准写法
var addEvent = function(ele, type, handler) {
    // 非IE浏览器
    if (window.addEventListener) {
       return ele.addEventListener(type, handler, false);
    }
    
    // IE浏览器
    if (window.attachEvent) {
       return ele.attachEvent('on'+type, handler);
    }
};
改进一

优点: 不用每次都执行条件语句判断
缺点: 这个函数如果用不到,仍然会执行一次判断

 var addEvent = (function(ele, type, handler) {
   // 非IE浏览器
   if (window.addEventListener) {
       return function(ele, type, handler) {
           ele.addEventListener(type, handler, false);
       };
   }
   
   // IE浏览器
   if (window.attachEvent) {
       return function(ele, type, handler) {
           ele.attachEvent('on' + type, handler);
       };
   }
})();
改进二

优点: 只有第一次调用时,会执行一次条件语句

var addEvent = function(ele, type, handler) {
    // 非IE浏览器
    if (window.addEventListener) {
        addEvent = function(ele, type, handler) {
            ele.addEventListener(type, handler, false);
        };
    } else if (window.attachEvent) {
        // IE浏览器
        addEvent = function(ele, type, handler) {
            ele.attachEvent('on' + type, handler);
        };
    }
    addEvent(ele, type, handler);
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.常规 缺点:每次调用都会执行条件判断,可避免 2.改进,只在加载时做判断 缺点:虽避免了判断,但如果从未使用过...
    魔法少女王遗疯阅读 208评论 0 0
  • 听着窗外的凄雨思绪被雨滴灌开了心底不晓得你是否会来但我依然在这里在这下雨的夜等待着你的痕迹 茫茫人海宛如夜空的繁星...
    _贾立松_阅读 265评论 6 3
  • 为什么我们懂得了那么多道理,却仍然过不好这一生?为什么我们看了那么多书,却还是记不住? 因为读完...
    红参勿忘阅读 301评论 4 2
  • 作者:Seasee Youl链接:https://www.zhihu.com/question/49573343/...
    宋强阅读 335评论 0 1
  • 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动...
    一代骄马阅读 157评论 0 0