this
のコンテキストを保存する一般的な方法は何ですか? もっと速いのは何ですか?あなたは何を好きですか?
$ .proxy(...)
$('a').on('click', $.proxy(function() { this.close(); }, this));
のvar自己
var self = this; $('a').on('click', function() { self.close(); });
this
のコンテキストを保存する一般的な方法は何ですか? もっと速いのは何ですか?あなたは何を好きですか?
$ .proxy(...)
$('a').on('click', $.proxy(function() {
this.close();
}, this));
のvar自己
var self = this;
$('a').on('click', function() {
self.close();
});
のは、あなたのコードを修正してみましょう。あなたは役に立たない関数宣言を持って、今、self
$('a').on('click', $.proxy(this.close, this));
としてあなたが$.proxy
を使用することができますあなたが頻繁にあなたのself
変数を再利用するように、少し読みやすくなります。それはおそらくそれがより多く使われている理由です。あなたはIE8と互換性があるように持っていないとき、あなたはbindを使用することが
注:
$('a').on('click', this.close.bind(this));
まずいずれかを選択します。余分な変数は必要ありません。
どちらも共通しています。
この場合の速度は関係ありません。 0.01ミリ秒後にクリックのコールバックが開始されるかどうかはユーザーにはわかりません。または0.1ms。
まれに、変数メソッドが少し速くなると思いますが、ベンチマークする必要があります。
個人的な好みは、使用される場所やコールバック内のコードによって異なります。可変メソッドの1つの利点は、ネストされたコールバックに対して各レベルにそれを再適用する必要なしに機能することです。
私は '$ .proxy()'が好きです –
私の個人的な統計量は約五十です。すべての深刻さ:1つを選択し、それに固執する。 FYI、 '$ .proxy'は、関数のネイティブ' .bind'メソッドと同じです。 –
どのように高速ですか?実行に関しては、[ベンチマーク]する必要があります(http://jsperf.com)。何が好きですか? 2番目のオプションは、私にはわかりやすいので、私は行きたいと思っています。 –