3

この質問は、バックボーンの質問というよりも JavaScript の質問だと思いますが、バックボーンでアプリケーションを開発しているときに遭遇したので、そのコンテキストで質問します。

引数を持つメソッドをモデルの変更イベントにバインドしています。以下のコードは、イベントが発生したときではなく、リスナーがバインドされたときにそのメソッドを実行します。

this.model.on("change:disposition", this.dChange("disposition"), this);

次のコードは、変更イベントが発生したときにメソッドを実行します (目的の動作)。

this.model.on("change:disposition", function(){ this.dChange("disposition"); }, this);

この 2 つの事例で具体的に何が起こっているのかを誰かが説明してくれれば幸いです。また、私が行ったようにメソッドをクロージャーでラップするのではなく、引数でメソッドをバインドするより良い方法はありますか?

ありがとう。

4

1 に答える 1

3

呼び出すthis.dChange("disposition")と、関数が呼び出されます。(括弧()を使用して呼び出しています)

しかし、実際に関数オブジェクトを参照している場合function() {}this.dChangeそして、イベントが発生したときにイベント マネージャーが呼び出すのは、この参照です。

補足:あなたの場合、anonymus 関数を使用する代わりに、次のように Underscore.js のbindメソッドを使用できます。

this.model.on("change:disposition", _.bind(this.dChange, this, "disposition"));
于 2012-12-23T18:58:35.927 に答える