【Node.js24.x】WeakMap::WeakMap()関数の使い方
WeakMap関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
WeakMap関数は、キーと値のペアを格納する新しいWeakMapオブジェクトを生成する関数です。このオブジェクトは、キーとしてオブジェクトのみを受け入れ、そのキーに対して「弱い参照」を保持するという特殊な性質を持っています。弱い参照とは、キーとなるオブジェクトが他のどこからも参照されなくなった場合、ガベージコレクションによってメモリから自動的に解放されることを妨げない参照のことです。
この特性により、WeakMapに格納されたキーと値のペアは、キーオブジェクトが不要になったときに自動的にメモリから削除されます。これは、従来のMapオブジェクトがキーへの強い参照を保持し、キーオブジェクトがたとえ他の場所で使われなくなったとしても、Mapが参照している限りメモリに残り続けるという挙動とは対照的です。WeakMapを利用することで、メモリリークのリスクを低減し、アプリケーションのメモリ使用量を効率的に管理できます。
ただし、WeakMapはその性質上、いくつかの制約があります。キーは必ずオブジェクトでなければならず、プリミティブ型(文字列や数値など)はキーとして使用できません。また、内部のキーと値のペアがいつガベージコレクションされるか予測できないため、sizeプロパティを持たず、forEachメソッドやkeys(), values(), entries()のようなイテレーターを利用して内容を反復処理することはできません。主に、オブジェクトに付随する補助データを、そのオブジェクトが破棄されたときに合わせて自動的にクリーンアップする用途などで利用されます。
構文(syntax)
1const weakMap = new WeakMap(); 2 3const keyObject = {}; 4weakMap.set(keyObject, "関連付けられた値"); 5 6const value = weakMap.get(keyObject);
引数(parameters)
iterable = undefined
- iterable: Optional. An iterable object whose elements are key-value pairs. This can be an Array or another iterable. If not provided, an empty WeakMap is created.
戻り値(return)
WeakMap
WeakMapコンストラクタは、新しいWeakMapオブジェクトを生成して返します。