人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaScript の質問です。可変長の引数を受け取り、個別に別の関数に引き渡したいです。
非常に醜いやり方としては以下のような処理になりますが、もっとスマートにしたいです。


obj.FuncA = function(arg1, arg2){}
obj.FuncB = function(arg1, arg2, arg3, arg4){}
obj.FuncC = function(arg1){}

var XYZ = "FuncA";

function Hoge()
{
var a = arguments;
switch (a.length)
{
case 0: { obj[XYZ](); } break;
case 1: { obj[XYZ](a[0]); } break;
case 2: { obj[XYZ](a[0], a[1]); } break;
case 3: { obj[XYZ](a[0], a[1], a[2]); } break;
case 4: { obj[XYZ](a[0], a[1], a[2], a[3]); } break;
case 5: { obj[XYZ](a[0], a[1], a[2], a[3], a[4]); } break;
case 6: { obj[XYZ](a[0], a[1], a[2], a[3], a[4], a[5]); } break;
default: { throw new RuntimeException("Arguments too much!")} break;
}
}

obj.FuncA ? obj.FuncC の定義については何が来るかこちらで予測できないとします。
arguments から上記の例の switch のように有限かつ見苦しい方法以外で適切に引数を受け渡したいです。
宜しくお願いします。


●質問者: Takel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CASE hoge JavaScript switch XYZ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● susie-t
●200ポイント ベストアンサー

apply関数を使用して

function Hoge()
{
 obj[XYZ].apply(obj, arguments);
}

でどうでしょう。

◎質問者からの返答

ありがとうございます。

どうやらこれが望んでいた動作のようです。

(IE7で arguments が NULL な時にエラーになるので事前チェックが必要でしたが)。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ