Js 获取当前函数参数对象的实现代码
有时候在封装控件的时候在很多Js函数中需要获取传入的直接参数或者对象参数,那么我们就需要每次都去判断第一个对象,所以为了方便在此封装一个函数,来获取当前函数中的参数值:
/*------------------------------------------ *清除字符串两端空格,包含换行符、制表符 *------------------------------------------*/ String.prototype.Trim=function(){returnthis.replace(/(^[\s\n\t]+|[\s\n\t]+$)/g,"");} /*---------------------------------------- *获取当前函数的参数对象 *---------------------------------------- *diffCase是否区分大小写,默认false *----------------------------------------*/ functionGetArgs(diffCase){ //返回参数对象 varresult=newObject(); //获取调用函数 varcaller=arguments.callee.caller; if(caller==null||caller.arguments.length==0)returnresult; //获取函数的参数集合 varmatchs=caller.toString().match(/\s*function[\w\s]*\(([\w\s,]*)\)/); if(matchs==null)returnresult; varargArray=matchs[1].split(","); //获取参数对象 varparams=caller.arguments[0]; varindex=typeof(params)=="object"?1:0; if(index==1){ for(varpinparams){ for(vari=0;i<argArray.length;i++){ vararg=argArray[i].Trim(); if(diffCase){ if(arg==p){ result[arg]=params[p]; break; } }else{ if(arg.toLocaleLowerCase()==p.toLocaleLowerCase()){ result[arg]=params[p]; break; } } } } } //多个参数将第一个后面的参数覆盖对象传入的参数 for(vari=index;i<argArray.length&&i<caller.arguments.length;i++) result[argArray[i].Trim()]=caller.arguments[i]; returnresult; }
调用示例:
//测试函数 functionTest(name,age){ //获取参数对象 varargs=GetArgs(); alert("姓名:"+args.name+",年龄:"+args.age); } //调用测试 Test("张三",25); Test({name:"李四",age:30}); Test({name:"王五"},18);