惰性函数可以优化频繁使用的函数。常用于函数库的编写、单例模式之中。
应用:添加绑定函数
1.初始版本:每一次调用都要进行 else-if 判断,其实第一次调用后,已经知道浏览器的环境,环境是固定的,可以在第一次判断后,就保留判断,可以优化多次调用函数的性能。
function emit (element,type,func){ if(element.addEventListener){ emit = function (element,type,func) { element.addEventListener(type,func,false) } }else if(element.attachEvent){ emit = function (element,type,func) { element.attachEvent('on'+ type,func); }}else{ emit = function (element,type,func) { emit = element['on'+type]=func; } } emit(element,type,func); } emit(box, 'click', fn1);
2. 更改后的版本:在第一次调用后 emit函数被新的内容覆盖,不需要再进行 if 判断。
function emit (element,type,func){
if(element.addEventListener){
emit = function (element,type,func) {
element.addEventListener(type,func,false)
}
}else if(element.attachEvent){
emit = function (element,type,func) {
element.attachEvent('on'+ type,func);
}}else{
emit = function (element,type,func) {
emit = element['on'+type]=func;
}
}
emit(element,type,func);
}
emit(box, 'click', fn1);