JavaScript 破棄オブジェクト

Anika Tabassum Era 2023年10月12日
  1. delete 演算子を使用して JavaScript でオブジェクトを破棄する
  2. destroy メソッドを使用して JavaScript でオブジェクト インスタンスを渡す
  3. JavaScript でオブジェクト変数参照を null に設定する
JavaScript 破棄オブジェクト

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);

出力:

destroy 演算子を使用してオブジェクトを破棄する

後の 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);

出力:

destroy メソッドを使用してオブジェクト インスタンスを渡す

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
Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook

関連記事 - JavaScript Object