6

私はよく$(this)jQueryイベントハンドラー内で使用し、キャッシュすることはありません。私がやるなら

var $this = $(this);

コンストラクターの代わりに変数を使用しますが、私のコードは大幅なパフォーマンスを向上させますか?


この最適化によるパフォーマンスの向上を測定するためのJSPerfテスト:http://jsperf.com/jquery-this-caching

4

2 に答える 2

9

ちっちゃくて小さな、知覚できないもの、はい。重要?いいえ。

実行するたび$(this)に、いくつかの関数呼び出しといくつかのメモリ割り当てが発生します。関数呼び出しはここにもそこにもありませんが(IE6でも、私は驚いたのですが)、メモリ管理をうまく処理できないブラウザーでは、メモリチャーンが増える可能性があります。ほとんどの現代のものはそうします。

関数を呼び出したり、オブジェクトを不必要に割り当てたりするのは好きではないので、常に結果を変数に保存します。そしてそれはそれらのparensをタイプすることを節約します。:-)

于 2012-12-17T17:53:19.787 に答える
3

はい。毎回$(this)新しいjqueryオブジェクトを作成するためです。
ただし、1000倍以上実行した場合でも、大きなパフォーマンスは得られません。

また、複数回使用されたオブジェクトをキャッシュすることをお勧めします。

于 2012-12-17T17:53:36.997 に答える