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