js实现链式调用

给函数concat函数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49


function addEvent(fn){
	var oldFun = window.onload;
	if(oldFun){
		window.onload = function(){
			oldFun();
			fn();
		}
	}else{
		window.onload = fn;
	}
}
var fn1 = function(){
	console.log(1);
}
var fn2 = function(){
	console.log(2);
}
var fn3 = function(){
	console.log(3)
}
addEvent(fn1);
addEvent(fn2);
addEvent(fn3);
// 加强版本
var fn_concat = function(fn1,fn2){
	if(fn1){
		return function(){
			fn1();
			fn2();
		}
	}
	return fn2;
}
var fn4 = fn_concat(fn1,fn_concat(fn2,fn3));
// 链式调用版本 有错误的代码
var _blank = function(){
}
//看似完美的代码,发现 这个只能传递一个参数 永远做不到链式调用 
var chain=function(fn){
	if(fn){
		return function(){
			_blank();  
			fn();
		}
	}
	return _blank;
}