林秀栋的技术博客

设计模式(十九) 惰性模式

//减少重复性的分支判断。
//比如为元素添加事件,根据浏览器不同方法不同。但其实第一次判断后,后面在该页面都是走这个分支,不需要重复判断
A.on = function(){
	if(dom.addEventListener){
		//…
	}else if(dom.attachEvent){
		//…
	}else{
		//…
	}
}
//惰性模式有两种方法,一种是加载页面后通过闭包重新定义。
A.on = function(dom, type, fn){
	if(document.addEventListener){
		return function(dom, type, fn){ 	//重新定义该方法
			dom.addEventListener(type, fn, false);
		}
	}else if(dom.attachEvent){
		//…
	}else{
		//…
	}
}()
//第二种是第一次调用时执行。
A.on = function( dom, type, fn){
	if(dom.addEventListener){
		A.on = function(dom, type, fn){	//重新定义该方法
			dom.addEventListener(type, fn, false);
		}
	}else if(dom.attachEvent){
		//…
	}else{
		//…
	}
	A.on(dom, type, fn);
}
A.on(div, 'click', function(){});
//惰性模式是一直拖延模式。两种方法都是对方法的重写,第一种在页面加载后马上执行,影响页面加载的资源,第二种在第一次调用时执行,影响第一次执行时间。而了解浏览器类型后,之后的使用就不用重复判断了。