5

のコンテキストを保持する一般的な方法は何thisですか? 何が速いですか?何がいいですか?

  1. $.proxy(...)

    $('a').on('click', $.proxy(function() {
        this.close();
    }, this));
    
  2. 自己変数

    var self = this;
    
    $('a').on('click', function() {
        self.close();
    });
    
4

3 に答える 3

2

コードを修正することから始めましょう。$.proxy役に立たない関数宣言があります。

$('a').on('click', $.proxy(this.close, this));

さて、に基づく2番目のソリューションself

  • 基本的な JavaScript の知識のみが必要です
  • jQueryを必要としません
  • self特に変数を頻繁に再利用する場合は、もう少し読みやすくなります
  • はるかに高速です

それがおそらくより多く使用されている理由です。

IE8 と互換性がある必要がない場合は、bindを使用できます。

$('a').on('click', this.close.bind(this));
于 2013-03-08T13:38:13.570 に答える
1

どちらも一般的です。

この場合の速度は関係ありません。クリックのコールバックが 0.01 ミリ秒後に開始されても、ユーザーは気付かないでしょう。または0.1ミリ秒。

まれに問題になる場合がありますが、変数メソッドの方がわずかに速いと思いますが、ベンチマークする必要があります。

私の個人的な好みは、それが使用される場所と、コールバック内のコードが何をするかによって異なります。変数メソッドの利点の 1 つは、各レベルに再適用する必要なく、ネストされたコールバックに対して機能することです。

于 2013-03-08T13:44:34.597 に答える
0

最初のものを選択します。追加の変数は必要ありません。

于 2013-03-08T13:41:39.387 に答える