Sometimes when encapsulating a control, many Js functions need to obtain the passed direct parameters or object parameters, so we need to judge the first object every time, so in order to facilitate encapsulation of a function here, we can obtain the parameter values in the current function:
/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- GetArgs(diffCase) { //Return the parameter object var result = new Object(); //Get the call function var caller = arguments.callee.caller; if (caller == null || caller.arguments.length == 0) return result; //Get the parameter set of the function var matchs = caller.toString().match(//s*function[/w/s]*/(([/w/s,]*)/)/); if (matchs == null) return result; var argArray = matchs[1].split(","); //Get the parameter object var params = caller.arguments[0]; var index = typeof (params) == "object" ? 1 : 0; if (index == 1) { for (var p in params) { for (var i = 0; i < argArray.length; i++) { var arg = argArray[i].Trim(); if (diffCase) { if (arg == p) { result[arg] = params[p]; break; } } else { if (arg.toLocaleLowerCase() == p.toLocaleLowerCase()) { result[arg] = params[p]; break; } } } } } } //Multiple parameters overwrite the parameter passed in by the object for (var i = index; i < argArray.length && i < caller.arguments.length; i++) result[argArray[i].Trim()] = caller.arguments[i]; return result;}Call example:
//Test function function Test(name, age) { //Get parameter object var args = GetArgs(); alert("Name: " + args.name + ", age: " + args.age);}//Call test Test("Zhang San", 25); Test({ name: "Li Si", age: 30 }); Test({ name: "Wang Wu" }, 18);