は、私はあなたがこれを困難にしている理由はわかりません。 Javascriptはガベージコレクション言語です。何かが解放されるのを許すためにあなたがしなければならないことは、どこにも参照がないことを確認することです。あなたがで始まる場合
ので、:
obj = null;
:
var obj = {
data: "foo";
};
、今あなたが「自由」RIDまたはそのオブジェクトを取得したい、すべてあなたがしなければならないと、それへの参照が明確です
最初に定義してobj
に割り当てたデータ構造への参照がコード内に存在しないため、ガベージコレクタは解放します。
オブジェクトは自分自身を破壊することはできません(他のオブジェクトが参照を持つ可能性があるため)。すべての参照を削除することで解放されます。オブジェクトは他のものへの自身の参照をクリアすることができますが、一般的には必要ではありませんが、オブジェクト自体への参照をすべて削除すると保持する参照も処理されるため、JSとDOMの循環参照のバグは例外です特定の古いブラウザ - 特定のIEで)。
削除したいオブジェクトにプロパティを持っている場合は、明示的に「削除」する場合があります。だから、あなたが持っている場合:
var obj = {
data: "foo",
count: 4
};
そして、あなたは、あなたがこれでそれを行うことができ、「データ」プロパティを削除したい:プロパティ/キーは変数を経由して、プログラムに割り当てられた場合の
delete obj.data;
このように:
delete obj[key];
:
var key = "xxx";
obj[key] = "foo";
あなたがそのキーを削除することができます
エラーは何ですか? –
無効な代入の左側 [Break On This Error] destroy:function(){this = null;} – Fostah
オブジェクトをデストラクタでカプセル化する利点は何ですか? obj.destroy()はobj = nullよりも優れていますか? – Tim