首页 > 代码库 > Javascript参数个数可变的函数 动态传人和取得参数

Javascript参数个数可变的函数 动态传人和取得参数

js中的函数是一个对象,一个Function对象(函数参数列表及函数主体事实上只是Function对象的构造函数的参数而已),跟其他对象一 样可以在运行时增加属性、删除属性,函数参数是可变的,比如定义函数时定义的参数列表只有3个参数,调用时你却可以只传2个参数,或超过3个参数,通过函 数对象的length属性可以得到函数定义的形参个数,而函数调用时的实际参数列表则可以通过函数的arguments属性(一个Arguments对 象,类似于数组)访问到,arguments.length就是实际参数的个数。

参数个数可变的函数,arguments的用法;   可以500%提高开发效率的前端UI框架!

动态函数: 

.代码  收藏代码
  1. var square=new Function("x","y","var sum;sum=x*x+y*y;return sum;")alert(square(2,3));  

 

动态函数的作用:函数体是由一个字符串构成的。

.代码  收藏代码
  1. function ArgTest(a, b){  
  2.     var i, s = "The ArgTest function expected ";  
  3.     var numargs = arguments.length; // 获取被传递参数的数值。  
  4.     var expargs = ArgTest.length; // 获取期望参数的数值。  
  5.     if (expargs < 2)  
  6.         s += expargs + " argument. ";  
  7.     else  
  8.         s += expargs + " arguments. ";  
  9.     if (numargs < 2)  
  10.         s += numargs + " was passed.";  
  11.     else  
  12.         s += numargs + " were passed.";  
  13.     s += "/n/n"  
  14.     for (i =0 ; i < numargs; i++){ // 获取参数内容。  
  15.         s += " Arg " + i + " = " + arguments[i] + "/n";  
  16.     }  
  17.     return(s); // 返回参数列表。  
  18. }  

 

   

------------------

自己实现的代码可以500%提高开发效率的前端UI框架!

------------------

.代码  收藏代码
  1. function addrow(responseText)  
  2. {  
  3.    //alert(responseText);  
  4.       
  5.    var jsontemp = eval(‘(‘ + responseText + ‘)‘);  
  6.    var length = jsontemp.root.length;  
  7.       
  8.    var type = "";  
  9.    var id = "";  
  10.    var date = "";  
  11.    var sucOrf = "";  
  12.       
  13.    if(length>0)  
  14.    {  
  15.     for(var i = 0; i<length; i++)  
  16.     {  
  17.      type = jsontemp.root[i].type;  
  18.      id = jsontemp.root[i].id;  
  19.      date = jsontemp.root[i].date;  
  20.      sucOrf = jsontemp.root[i].sucOrf;  
  21.         
  22.      addDivArgs(type,render(renderType,type),id,"",date,"",sucOrf,render(renderSucOrf,sucOrf));  
  23.      //addDiv(type,id,date,sucOrf);     
  24.     }  
  25.    }  
  26.    else  
  27.    {  
  28.    return;  
  29.    }  
  30.       
  31.    backcount = backcount+length;  
  32.       
  33.    if(backcount>=2000)//当记录大于xxx条时重新加载页面  
  34.    {  
  35.    window.location.reload();  
  36.    //window.location.href=http://www.mamicode.com/"addrow.html";  
  37.    return;  
  38.    }  
  39.       
  40.    container.scrollTop = container.scrollHeight;  
  41. }  
  42.     
  43. function render(renderFunction,value)  
  44. {  
  45.    return renderFunction(value);  
  46. }  
  47.     
  48. function renderSucOrf(value)  
  49. {  
  50.    if(value=http://www.mamicode.com/="成功")  
  51.    {  
  52.     return "div3 success";  
  53.    }  
  54.    else  
  55.    {  
  56.     return "div3 false";  
  57.    }    
  58. }  
  59.     
  60. function renderType(value)  
  61. {  
  62.    if(value=http://www.mamicode.com/="委托")  
  63.    {  
  64.     return "div0 success";  
  65.    }  
  66.    else  
  67.    {  
  68.     return "div0 false";  
  69.    }    
  70. }  

 


//插入div
//传入可变参数的函数 可以500%提高开发效率的前端UI框架!

.代码  收藏代码
  1. var numargs = 0;  
  2. var tmpDiv = null;  
  3. var defaultClass = new Array("div0","div1","div2","div3");//默认样式数组  

 



//动态传入列的值和渲染方法处理后返回的样式,样式为空采用默认的样式

.代码  收藏代码
  1. function addDivArgs(value,render)  
  2. {  
  3.    numargs = arguments.length; // 获取被传递参数的数值  
  4.    tmpDiv = document.createElement("div");  
  5.    tmpDiv.className = "divline";  
  6.       
  7.    for(var i = 0; i < numargs; i+=2)//每列传入两个参数  
  8.    {  
  9.     tempDivId = document.createElement("div");  
  10.           
  11.    if(arguments[i+1]=="")//每列的第二个参数为空  
  12.     {  
  13.      tempDivId.className = defaultClass[i*(1/2)];  
  14.     }  
  15.     else  
  16.     {  
  17.      tempDivId.className = arguments[i+1];  
  18.     }  
  19.        
  20.     tmpDiv.appendChild(tempDivId);  
  21.        
  22.     tempText = document.createTextNode(arguments[i]);  
  23.     tempDivId.appendChild(tempText);     
  24.    }  
  25.    container.appendChild(tmpDiv);  
  26. }  

Javascript参数个数可变的函数 动态传人和取得参数