js中的函数是一个对象,一个Function对象(函数参数列表及函数主体事实上只是Function对象的构造函数的参数而已),跟其他对象一 样可以在运行时增加属性、删除属性,函数参数是可变的,比如定义函数时定义的参数列表只有3个参数,调用时你却可以只传2个参数,或超过3个参数,通过函 数对象的length属性可以得到函数定义的形参个数,而函数调用时的实际参数列表则可以通过函数的arguments属性(一个Arguments对 象,类似于数组)访问到,arguments.length就是实际参数的个数。
参数个数可变的函数,arguments的用法; 可以500%提高开发效率的前端UI框架!
动态函数:
var square=new Function("x","y","var sum;sum=x*x+y*y;return sum;")alert(square(2,3));
动态函数的作用:函数体是由一个字符串构成的。
function ArgTest(a, b){ var i, s = "The ArgTest function expected "; var numargs = arguments.length; // 获取被传递参数的数值。 var expargs = ArgTest.length; // 获取期望参数的数值。 if (expargs < 2) s += expargs + " argument. "; else s += expargs + " arguments. "; if (numargs < 2) s += numargs + " was passed."; else s += numargs + " were passed."; s += "/n/n" for (i =0 ; i < numargs; i++){ // 获取参数内容。 s += " Arg " + i + " = " + arguments[i] + "/n"; } return(s); // 返回参数列表。 }
------------------
自己实现的代码可以500%提高开发效率的前端UI框架!
------------------
function addrow(responseText) { //alert(responseText); var jsontemp = eval('(' + responseText + ')'); var length = jsontemp.root.length; var type = ""; var id = ""; var date = ""; var sucOrf = ""; if(length>0) { for(var i = 0; i<length; i++) { type = jsontemp.root[i].type; id = jsontemp.root[i].id; date = jsontemp.root[i].date; sucOrf = jsontemp.root[i].sucOrf; addDivArgs(type,render(renderType,type),id,"",date,"",sucOrf,render(renderSucOrf,sucOrf)); //addDiv(type,id,date,sucOrf); } } else { return; } backcount = backcount+length; if(backcount>=2000)//当记录大于xxx条时重新加载页面 { window.location.reload(); //window.location.href="addrow.html"; return; } container.scrollTop = container.scrollHeight; } function render(renderFunction,value) { return renderFunction(value); } function renderSucOrf(value) { if(value=="成功") { return "div3 success"; } else { return "div3 false"; } } function renderType(value) { if(value=="委托") { return "div0 success"; } else { return "div0 false"; } }
//插入div
//传入可变参数的函数 可以500%提高开发效率的前端UI框架!
var numargs = 0; var tmpDiv = null; var defaultClass = new Array("div0","div1","div2","div3");//默认样式数组
//动态传入列的值和渲染方法处理后返回的样式,样式为空采用默认的样式
function addDivArgs(value,render) { numargs = arguments.length; // 获取被传递参数的数值 tmpDiv = document.createElement("div"); tmpDiv.className = "divline"; for(var i = 0; i < numargs; i+=2)//每列传入两个参数 { tempDivId = document.createElement("div"); if(arguments[i+1]=="")//每列的第二个参数为空 { tempDivId.className = defaultClass[i*(1/2)]; } else { tempDivId.className = arguments[i+1]; } tmpDiv.appendChild(tempDivId); tempText = document.createTextNode(arguments[i]); tempDivId.appendChild(tempText); } container.appendChild(tmpDiv); }