なぜこれを難しくしているのかわかりません。Javascriptはガベージコレクションされた言語です。何かを解放できるようにするためにあなたがしなければならないのは、どこにもそれへの参照がもうないことを確認することです。
したがって、次のように開始する場合:
var obj = {
data: "foo";
};
そして今、あなたはそのオブジェクトを取り除くか「解放」したいので、あなたがしなければならないのはそれへの参照をクリアすることだけです:
obj = null;
コード内に、最初に定義して割り当てたデータ構造への参照がなくなったためobj
、ガベージコレクターはそれを解放します。
オブジェクトはそれ自体を破壊することはできません(他のものがそれを参照している可能性があるため)。それへのすべての参照を削除することにより、それを解放することができます。オブジェクトは他のものへの自身の参照をクリアできますが、オブジェクト自体へのすべての参照を削除すると、オブジェクトが保持する参照も処理されるため、通常は必要ありません(JSとDOM間の循環参照に関するいくつかのバグを除く)特定の古いブラウザ(特定のIE)。
何かを明示的に「削除」する可能性があるのは、削除したいオブジェクトにプロパティがある場合です。だから、あなたが持っているなら:
var obj = {
data: "foo",
count: 4
};
そして、あなたは「データ」プロパティを削除したいです、あなたはこれでそれをすることができます:
delete obj.data;
プロパティ/キーが次のような変数を介してプログラムで割り当てられた場合の例:
var key = "xxx";
obj[key] = "foo";
次の方法でそのキーを削除できます。
delete obj[key];