3

私は JavaScriptについて知っていcallますが、現在、次のシナリオで立ち往生しています。apply

私はBenchmarkjsを使用しており、次のように定義された API があります。

.on(eventType, listener)

たとえば、次のようにします。

/* Register the onStart callback */
suite.on('start', onStart);

私のonStart関数はそのように呼び出されthis === suiteます。

のいずれかを定義できるようにするにはどうすればよいargumentsですonStartか?

私のコードは次のようなものです:

foo = function() {
   this.suite.on('start', this.onStart);
}

onStart関数に への参照を持たせたいのですがfoo

助言がありますか?

4

2 に答える 2

1

Function.prototype.bind部分適用/カレー関数を作成するために呼び出すことができます。

.bind()コンテキストを最初のパラメーターとして受け取り、その後に渡されるすべてのパラメーターは、バインドされた関数呼び出しの正式なパラメーターとして使用されます

suite.on( 'start', this.onStart.bind( this, foo ) );

これで、への参照が最初の引数としてfoo使用できるようになります。onStart()

于 2013-02-15T14:04:39.430 に答える
0

関数にラップして渡すことができthisます。onStart

foo = function() {
    this.suite.on('start', function(arguments){onStart(arguments, this)});
}

IE 8 以前ではサポートされていないbindため、を使用する代わりに渡すことをお勧めします。bind

于 2013-02-15T14:02:48.157 に答える