2017-08-31 17 views
0

のjQueryを使用して、私はあなたが繰り返しDOMを横断するのではなく、オブジェクトを格納する必要があることを知っている:

// This is good 
var something = $(".some-class") 

私の質問は、jQueryの$(this)が同様のパフォーマンスの問題を持っているんですか?私はこれをしなければならない:

// should I do this? 
var current_object = $(this) 

$(this)

答えて

1

$(this)は無料ではありません(これは私の義務this混乱さ冗談です)。新しいjQueryオブジェクトをインスタンス化します。しかし、DOMをトラバースするのに比べると、ほとんど無料です。

このレベルの最適化は通常必要ありません。読み込み可能なコードを作成し、パフォーマンスのボトルネックが発生した場合にのみ、このようなことを最適化します。

私のルールは、var foo = $(this)のようなものです:状況によって読みやすいものを使用してください。

$(this)はかなり明確な意味を持ちますので、意味がある場合はそれを使用してください。しかし、別の名前で$(this)と呼ぶのが意味のあるところで何かしているのであれば、それをしてください。

あなたとあなたのコーダーの時間を最適化します。これは、方程式の中で最も貴重なリソースです。

+0

'$(this)'が新しいjQueryオブジェクトを開始する場合、 'var foo = $(this)'はコピーを作成しませんか?あなたは2つの同一のオブジェクトを持っているので、助けているよりもむしろ実際にパフォーマンスを傷つけるでしょう。 – Scribblemacher

+0

これを一度だけ使用すると、パフォーマンスが低下します。複数回使用するとパフォーマンスが向上します。あなたの '$(" selector ")'の例でも同じことが言えます - 変数は、複数回使用する場合にのみ役立ちます。 – Flimzy

+0

それを何回も使用しても、どのように役立つでしょうか? '$([selector])'とは違って、 '$(this)'はDOMを横断する必要がないと思います。 'foo'と' $(this) 'は基本的に全く同じレベルではありませんか?たぶん、私はjQueryオブジェクトの性質を理解していないでしょう。 – Scribblemacher

関連する問題