javascript - js惰性载入函数,为什么指调用了一次呢
大家讲道理
大家讲道理 2017-04-10 16:58:36
[JavaScript讨论组]
var addEvent = function(el,type,handler){
    addEvent = el.addEventListener ? function(el,type,handler){
        el.addEventListener(type,handler,false);
    } : function(el,type,handler) {
        el.attachEvent("on" + type,handler);
    }
    addEvent(el,type,handler);
};

这是网上看到的一个判断兼容性的
他是说只检查一次兼容性,以后就不会再检查了,我不太明白为什么指检查了一次呢?如果以后都不检查,他是怎么记住的呢???

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(4)
高洛峰

第一次调用addEvent的时候,addEvent内部对兼容性做了一次判断并且重写了addEvent,所以后续就不用判断了。

伊谢尔伦

首先我不认为你找的代码是OK的,试一试下面的
var addEvent =(function(el,type,handler){ addEvent = el.addEventListener ? function(el,type,handler){ el.addEventListener(type,handler,false); } : function(el,type,handler) { el.attachEvent("on" + type,handler); }
})();
解释 :使用一个立即函数执行后addEvent就是指定的兼容事件监听的函数。

PHP中文网

var addEvent这句只会执行一次。
后面调用addEvent函数时,就会使用上面var指定的函数。。。

伊谢尔伦

其实我也遇到了这个问题。今天 在学 函数惰性加载。

    var addEvent = function(elem, type, handler){
    if(window.addEventListener){
        addEvent= function(elem, type, handler){
            elem.addEventListener(type, handler, false)
        }
    }else if(window.attacheEvent){    
        addEvent= function(elem, type, handler){
            elem.attacheEvent('on'+type, handler);
        }
    }
    
    return addEvent(elem, type, handler);
}

出现的问题是 在ie 出现堆栈溢出。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号