のjQueryを使用して、私はあなたが繰り返しDOMを横断するのではなく、オブジェクトを格納する必要があることを知っている:
// This is good
var something = $(".some-class")
私の質問は、jQueryの$(this)
が同様のパフォーマンスの問題を持っているんですか?私はこれをしなければならない:
// should I do this?
var current_object = $(this)
$(this)
?
は
のjQueryを使用して、私はあなたが繰り返しDOMを横断するのではなく、オブジェクトを格納する必要があることを知っている:
// This is good
var something = $(".some-class")
私の質問は、jQueryの$(this)
が同様のパフォーマンスの問題を持っているんですか?私はこれをしなければならない:
// should I do this?
var current_object = $(this)
$(this)
?
は
$(this)
は無料ではありません(これは私の義務this
混乱さ冗談です)。新しいjQueryオブジェクトをインスタンス化します。しかし、DOMをトラバースするのに比べると、ほとんど無料です。
このレベルの最適化は通常必要ありません。読み込み可能なコードを作成し、パフォーマンスのボトルネックが発生した場合にのみ、このようなことを最適化します。
私のルールは、var foo = $(this)
のようなものです:状況によって読みやすいものを使用してください。
$(this)
はかなり明確な意味を持ちますので、意味がある場合はそれを使用してください。しかし、別の名前で$(this)
と呼ぶのが意味のあるところで何かしているのであれば、それをしてください。
あなたとあなたのコーダーの時間を最適化します。これは、方程式の中で最も貴重なリソースです。
'$(this)'が新しいjQueryオブジェクトを開始する場合、 'var foo = $(this)'はコピーを作成しませんか?あなたは2つの同一のオブジェクトを持っているので、助けているよりもむしろ実際にパフォーマンスを傷つけるでしょう。 – Scribblemacher
これを一度だけ使用すると、パフォーマンスが低下します。複数回使用するとパフォーマンスが向上します。あなたの '$(" selector ")'の例でも同じことが言えます - 変数は、複数回使用する場合にのみ役立ちます。 – Flimzy
それを何回も使用しても、どのように役立つでしょうか? '$([selector])'とは違って、 '$(this)'はDOMを横断する必要がないと思います。 'foo'と' $(this) 'は基本的に全く同じレベルではありませんか?たぶん、私はjQueryオブジェクトの性質を理解していないでしょう。 – Scribblemacher