3

たとえば、次の2つの関数があるとします。

function a(param1) {
    console.log(param1);
}

function b(func, params) {
    func(params);
}

それから

b(a, 1);

期待どおりに「1」を出力します

今、私は追加の機能を持っていると仮定します

function c(param1, param2) {
    console.log(param1, param2);
}

似たようなことをする方法はありますか

b(a, 1);

2つのパラメータで給餌することを除いて?次のようなもの

b(c, [2, 3]);

[2、3]の延滞が個々のパラメーターに展開される場合

4

2 に答える 2

5

このようなもの:

function b(func) {
    func.apply(null, [].slice.call(arguments, 1));
}
于 2012-06-07T07:51:19.637 に答える
2

apply関数のメソッドを使用したい。したがって、内部では、だけでなくb使用します。func.apply(this, params)func(params)

の最初の引数applyは、何に設定thisするかです。2番目の引数は、関数に渡す引数の配列です。

したがって、のようなものは、を仮定b.foo(1,2,3)するのと同じです。foo.apply(b, [1,2,3])b.foo = foo

于 2012-06-07T07:48:36.823 に答える