私はJohn Resig's recipeをJavaScript 'クラス'と継承に使用しています。私はこの質問のためにこのような何かに戻って自分のコードを剥奪しました:オブジェクト内からJavaScriptオブジェクトを明示的に解放するにはどうすればよいですか?
MyClass = Class.extend({
// create an <h3>Hello world!</h3> in the HTML document
init : function (divId) {
this._divId = divId;
this._textDiv = document.createElement("h3");
this._textDiv.innerHTML = "Hello world!";
document.getElementById(divId).appendChild(this._textDiv);
},
// remove the <h3> and delete this object
remove : function() {
var container = document.getElementById(this._divId);
container.parentNode.removeChild(container);
// can I put some code here to release this object?
}
});
すべてがうまく機能:
var widget = new MyClass("theDivId");
...
widget.remove();
私はページ上のこれらのものの数百を持っているつもりです(もちろん一部で感覚的な機能)と私は各オブジェクトのメモリを解放する簡単な方法をしたいと思います。 widget = null;
を使用でき、必要なときにGCがオブジェクトを解放すると信じていますが、remove()
メソッドで明示的に何かできますか?私はremove()
の終わりにthis = null;
を配置することは動作しないことを知っている;)
JSオブジェクトを削除することはしばしばありませんが、DOM参照は不要になった時点で無効にすることをお勧めします。 (IE6ではこれが必須です)。 – c69
OK。 nullへのDOM参照を設定するためにいくつかの行を追加しました。ヒントをありがとう:) – wpearse