2

backbone.js の関数の 3 番目のパラメーターが何をするのか、実際には理解できませんでした.on()(コンテキストに想定されています)。

this.model.on('change', this.doStuff, context); 

Backbone.js on() によると、最後の this は何を指していますか? 内部の値を設定しているようですthis誰かがそのコンテキストの例を与えることができますか. 私は通常、onコンテキストなしで使用し、ビューを参照しているように見えますthisが、たまに他のものを参照しています(これはわかりません)。

contextでは、デフォルトで設定するバックボーンのロジックは何ですか? thisそして、ビューを参照したくないのはいつですか? thisまた、コンテキスト パラメータとして指定せずに常にビューを参照するようにする方法はありますか?

4

1 に答える 1

5

onソースを見ると、デフォルトcontextが何であるかがわかります。

on: function(name, callback, context) {
  //...
  events.push({callback: callback, context: context, ctx: context || this});
  //...
},

したがって、デフォルトは、呼び出されたcontextオブジェクトです: . したがって、次のように言うと:onctx: context || this

model.on('event', this.callback);

その後、呼び出さthisれるとmodel内部callbackになります。ビューになりたい場合はthis、次のように言います。

// Inside a view...
model.on('event', this.callback, this);

または、、、、、などを使用してcallbackバインドされた関数を作成します。_.bind_.bindAllFunction#bind$.proxy

を指定する理由は何contextですか? ビューのメソッドであるコールバック内では、おそらくビューになりたいと思うでしょう。呼び出したときにビューが何であるかを知るthis方法はありません。スタックをアンロールして、どこかにあるものを見つけることはできません。コール チェーンにアクセスできたとしても、どこで停止すればよいかわかりません。したがって、inを使用することが唯一の合理的なデフォルトであり、他の何かが必要な場合は、簡単にそう言うことができます。ononthisxx.on(...)

于 2012-12-21T19:13:22.153 に答える