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>

 

posted @ 2019-07-19 17:35  松松敲代码  阅读(6542)  评论(0编辑  收藏  举报