JavaScript 破棄オブジェクト
-
delete演算子を使用して JavaScript でオブジェクトを破棄する -
destroyメソッドを使用して JavaScript でオブジェクト インスタンスを渡す -
JavaScript でオブジェクト変数参照を
nullに設定する
JavaScript の destroy メソッドは、オブジェクト インスタンスにアクセスできません。 この例では、ケースを解決する 2つの方法を示します。
ある例では delete 演算子を導入し、次の例ではオブジェクトとそのインスタンスを渡そうとします。 したがって、オブジェクトとそのインスタンスがどのように未定義に設定されているかを調べます。
delete 演算子を使用して JavaScript でオブジェクトを破棄する
オブジェクトは、キーと値のペアとして複数のプロパティで構成されます。 JavaScript は、オブジェクトを直接消去する機能には導入されていないため、参照からプロパティと対応する値を削除する必要があります。
したがって、この場合、name プロパティを削除します。 delete 演算子を使用した場合の影響を見てみましょう。
コードスニペット:
const Employee = {
name: 'xyz',
id: 1
};
console.log(Employee.name);
delete Employee.name;
console.log(Employee.name);
出力:

後の Employee.name の値が undefined であることが視覚化できます。 オブジェクトはまだ id プロパティで構成されています。
そのプロパティを削除すると、オブジェクトは論理的に空になります。 ただし、オブジェクトはメモリから削除されません。
それでも、オブジェクトは過去のプロパティを保持していません。
destroy メソッドを使用して JavaScript でオブジェクト インスタンスを渡す
destroy メソッドを定義するクラス コンストラクターを開始します。 ここで、destroy 関数は、操作対象のオブジェクトとその特定のインスタンスを受け取ります。
後で、オブジェクト プロパティのインスタンスをインスタンス化します。この新しいインスタンスは、null または消滅するように操作されます。
コードスニペット:
// Class constructor
var Class = function() {
this.destroy = function(baseObject, refName) {
delete baseObject[refName];
};
};
// instanciate
var store = {'name': 'abc', 'id': 2};
console.log(store.id);
store.id = new Class();
console.log(store.id);
store.id.destroy(store, 'id');
console.log(store.id);
出力:

store.id にはまだ new Class() の開始がありますが、パラメータ (オブジェクト、インスタンス) が destroy メソッドに渡される前に削除操作が開始されませんでした。 これは、オブジェクトが null になる傾向がある方法です。
JavaScript でオブジェクト変数参照を null に設定する
変数がオブジェクトを指し、それを null に設定すると、そのオブジェクトにアクセスできなくなります。 したがって、JavaScript ガベージ コレクターはオブジェクトを削除します。
変数 userName は、次のコード例のオブジェクトを指しています。 userName 変数を介してオブジェクトにアクセスできるようになりました。
ただし、userName 変数を null に設定すると、オブジェクトにアクセスできなくなります。 その結果、オブジェクトが削除され、メモリが解放されます。
コード:
let userName = {id: 1, position: 2} console.log('Before deletion: ', userName);
// Set the object reference to null
userName = null;
// Check if we can reach the object
console.log('After deletion: ', userName);
出力:
Before deletion: Object { id: 1, position: 2 }
After deletion: null
