js多个参数(追加参数)
1 /** 2 * 多个参数 3 * @param fn 4 * @param args 5 * @param scope 6 */ 7 function multipleArguments(fn,args,scope){ 8 if(Object.prototype.toString.call(args)!="[object Array]"){ 9 if(args!=null&&args!=undefined){ 10 args = [args]; 11 } 12 } 13 return function(){ 14 //追加args,之后逐次追加参数 15 /* 16 第1次调用: 17 args+第1次调用传入的参数 18 第2次调用: 19 args+第1次调用传入的参数+第2次调用传入的参数 20 第3次调用: 21 args+第1次调用传入的参数+第2次调用传入的参数+第3次调用传入的参数 22 */ 23 /* 24 for(var i=0;i<arguments.length;i++){ 25 args.push(arguments[i]);//将参数追加到args中 26 } 27 fn.call(scope||window,args); 28 */ 29 30 //只追加传入的args 31 /* 32 第1次调用: 33 args+第1次调用传入的参数 34 第2次调用: 35 args+第2次调用传入的参数 36 第3次调用: 37 args+第3次调用传入的参数 38 */ 39 var _args = [].concat(args); 40 for (var i = 0; i < arguments.length; i++){ 41 _args.push(arguments[i]); 42 } 43 fn.call(scope||window,_args); 44 } 45 46 }
具体使用例子如下:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 2 "http://www.w3.org/TR/html4/strict.dtd"> 3 4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 7 <title></title> 8 <script type="text/javascript" src="./js/MultipleArguments.js"></script> 9 <script type="text/javascript"> 10 window.onload=initFn; 11 12 /** 13 * 初始化函数 14 */ 15 function initFn(){ 16 console.info('123456~~~'); 17 var addFn = multipleArguments(add,[1,2]); 18 var result = addFn(3,4); 19 console.info('result:',result); 20 21 var result1 = addFn(5,6); 22 console.info('result1:',result1); 23 24 var result2 = addFn(7,8); 25 console.info('result2:',result2); 26 27 var addFn1 = multipleArguments(add,[9,10]); 28 var result3 = addFn1(11,12); 29 console.info('result3:',result3); 30 31 var result4 = addFn(13,14); 32 console.info('result4:',result4); 33 } 34 35 36 /** 37 *加法 38 */ 39 function add(){ 40 console.info("arguments:",arguments); 41 var result = 0; 42 for(var i=0;i<arguments.length;i++){ 43 result+=arguments[i]; 44 } 45 return result; 46 } 47 </script> 48 </head> 49 <body> 50 51 </body> 52 </html>