明らかに、DOM 要素がまだ DOM に接続されている限り、そのままのコードは余分なメモリを消費します。しかし、DOM要素が使用されなくなった後も追加のメモリを引き続き使用するかどうかを尋ねていると思います。
更新: Joey の回答 (彼はその後削除した) のおかげで、私はjavascript のメモリ リークを調べるのに時間を費やしましたが、以下の段落の私の仮定が間違っているようです。DOM 要素は純粋なガベージ コレクションを使用しないため、通常、このような循環参照により、DOM 要素と JavaScript オブジェクトの両方が解放されなくなります。ただし、この回答の残りの部分はまだ正しいと思います。
JavaScript エンジンがガベージ コレクションをどのように実装するかについての深い知識がなければ、このトピックについて正式に話すことはできません。ただし、ガベージ コレクションに関する私の一般的な理解では、#something
要素が DOM から削除された後、結果MyClass
のオブジェクトには、他の接続を持たないオブジェクトへの参照のみが含まれるという意味で、コードは「安全」であると考えられます。ガベージ コレクターのグラフ アルゴリズムは、DOM 要素とそのMyClass
オブジェクトが「空間に浮いており」、他のすべてに接続されていないことを識別できる必要があります。
さらに、jQuery は、特定の DOM 要素が DOM から削除されると、その要素に関連付けられているデータとイベントを削除するために最善を尽くします。ドキュメントから:
jQuery は、DOM 要素が jQuery メソッドによって削除されたとき、およびユーザーがページを離れたときに、データが削除されることを保証します。
したがって、jQuery を一貫して使用すると仮定すると、とにかくオブジェクトが DOM から削除されると、一方向の参照しか得られないため、ガベージ コレクターがこれらのオブジェクトを削除できることを認識しやすくなります。
そのため、DOM 要素が削除された後にオブジェクトを参照するものが他にない限りMyClass
、メモリ リークは発生しません。