1
class Cat {
storage = new Map()
constructor(id) {
if(storage.has(id)) return storage.get(id)
storage.set(id, this)
}
}
アプリケーションへの参照がアプリケーションで使用されていない場合は、オブジェクトをストレージから削除します。しかし、アプリケーション内のリンクが存在し、同じIDを持つオブジェクトを作成しようとしている場合は、新しいオブジェクトを作成するのではなく、このオブジェクトを返します。どのように私はデストラクタなしでそれを行うことができますか?WeakMapパターンメモリリークのないシングルトン
しかし、ときにオブジェクトへのすべての参照がアプリケーションから消え、そしてオブジェクトはストレージから削除し、
アプリケーション内のid 'c1'と' Cat'オブジェクトへの参照が存在しないときに、あなたは何をしたいですか?それをマップから削除し、次回に 'new Cat(" c1 ")'で新しいオブジェクトを作成しますか? –
@ Koushik Chatterjeeはい、オブジェクトの一意なIDを持つオブジェクトは常に同じオブジェクトにする必要があります。ただし、オブジェクトへの参照がすべてアプリケーションから消え、オブジェクトがストレージから削除されても、新しいインスタンスを作成することはできませんオブジェクトの – Maxmaxmaximus
これはノードまたはブラウザで実行されていますか? –