1

関数があるとしましょう

f = function(a, b, c){
    // do something important
}

および引数を含む配列

var args = [5, 'string', 12] // just any values

明らかに、次のように関数を呼び出すことができます。

f(args[0], args[1], args[2])

これは本当にエレガントではありません。これを達成するためのより良い方法を探しています。ご提案いただきありがとうございます。

4

4 に答える 4

3
于 2013-10-29T18:09:09.500 に答える
1

を使用し.apply()ます。

f.apply(window, args);

これは、2 番目の引数の位置にある任意の配列のようなオブジェクトで機能します。

関数を呼び出し、f渡した最初の引数をそのthis値として設定し(ここでは を使用しましたwindow)、2 番目の引数のメンバーを個々の引数として関数に配布します。

結果は、これを行ったかのようになります。

f(5, 'string', 12);

Function.prototype.applyと呼ばれるメソッドに対応するものがあり.call()ます。メソッドは.call()まったく同じですが、引数を個別に渡す点が異なります。

f.call(window, 5, 'string, 12);

これの目的は、通常のように関数を呼び出すことですが、this値を手動で設定します。

于 2013-10-29T18:09:15.980 に答える
1

を使用し.apply()ます。2 番目の引数では、呼び出そうとしている関数に引数の配列を指定できます。最初の引数はthis、関数のコンテキストで必要な値です。

したがって、あなたの場合は次のようになります。

f.apply(null, args);

また

f.apply(window, args);

thisのコンテキスト内でオブジェクトfになりたい場合。window

于 2013-10-29T18:10:42.857 に答える