js惰性函数
针对优化频繁使用的函数,常用于函数库的编写,单例模式之中。
- 写一个test函数,首次调用返回时间戳,后面调用返回第一次的时间戳。
var test = (function(){
var t = null;
return function(){
if(t) return t
t = new Date().getTime()
return t
}
})()
test()
test()
test()
惰性函数
上面每次调用test函数都会判断t是否存在,优化test。
var test = function(){
var t = new Date().getTime()
// 第一次调用后改变test函数
test = function(){
return t;
}
return t;
}
test()
test()
test()
应用
function addEvent(dom, type, handler){
if(dom.addEventListener){
// false表示事件发生在冒泡阶段
dom.addEventListener(type, handler, false);
// 第一次调用后改变addEvent函数
addEvent = function(dom, type, handler){
dom.addEventListener(type, handler, false);
}
}else{
dom.attachEvent('on'+type, handler)
// 第一次调用后改变addEvent函数
addEvent = function(dom, type, handler){
dom.attachEvent('on'+type, handler);
}
}
}
调用后,addEvent变成:
1
1
1
1
1
1
1
1
1
1