コントロールをカプセル化する場合、多くのJS関数が渡された直接パラメーターまたはオブジェクトパラメーターを取得する必要がある場合があるため、毎回最初のオブジェクトを判断する必要があるため、関数のカプセル化を促進するために、現在の関数のパラメーター値を取得できます。
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- getArgs(diffcase){//パラメーターオブジェクトvar result = new object();を返します。 //コール関数var caller = arguments.callee.callerを取得します。 if(caller == null || caller.arguments.length == 0)return result; //関数var matchs = caller.tostring() if(matchs == null)return result; var argarray = matchs [1] .split( "、"); //パラメーターオブジェクトを取得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];壊す; }} else {if(arg.tolocalolowercase()== p.tolocalolowercase()){result [arg] = params [p];壊す; }}}}}} //複数のパラメーター(var i = index; i <argarray.length && i <caller.arguments.length; length; i ++)result [i] .trim()] = caller.arguments [i]; return result;}コール例:
//関数関数テスト(名前、年齢){//パラメーターオブジェクトvar args = getArgs(); alert( "name:" + args.name + "、age:" + args.age);} //コールテストテスト( "Zhang San"、25); test({name: "li si"、age:30}); test({name: "wang wu"}、18);