引数の個数を自動で判断して呼び出す
■引数の個数を自動で判断して呼び出す関数
funcsに設定された関数について、
引数の個数を自動で判断して呼び出す関数を振り分けるサンプルです。
// JavaScript1.2と明示した場合はarityプロパティが使えますが、それ以外は、 // lengthプロパティで引数の個数を取得できます。 // 関数配列 // グローバル変数である必要があります。 var funcs = new Array(); // 関数定義 funcs.FuncA = function(arg1, arg2){alert("funcA called:"+ arg1 + arg2);return ("funcA");}; funcs.FuncB = function(arg1, arg2, arg3, arg4){ alert("funcB called:" + arg1 + arg2 + arg3 + arg4);}; funcs.FuncC = function(arg1){alert("funcC called:" + arg1 )}; //////////////////////////////////////////////////////// // 引数の個数による自動振り分け呼び出し関数 // function Hoge() { var args = arguments; // for〜in文でまわす for( itemName in funcs ) { // 引数の個数を求める if( args.length == funcs[itemName].length) { // 引数の個数が一致した場合 // 呼び出して戻り値を返す return ( funcs[itemName].apply(this,arguments) ); } } // return しなかった場合 throw new RuntimeException("Arguments too much!"); } ////////////////////////////////// // 呼び出しテスト Hoge("1個"); alert("戻り値=" + Hoge("1個", "2個") ); Hoge("1個", "2個", "3個", "4個");