JavaScriptのWeakMapインスタンスで使える主なメソッドを解説
WeakMapは、キーとしてオブジェクトのみを受け付けるJavaScriptの特殊なコレクションです。キーへの参照が「弱く」保持されるため、キーとなったオブジェクトへの参照が他に存在しなくなると、ガベージコレクションによって自動的にメモリから解放されます。
ここでは、WeakMapインスタンスで利用できる主要な4つのメソッドを詳しく見ていきましょう。
1. WeakMap.prototype.delete(key)
指定したキーに関連付けられた値をWeakMapから削除します。削除後、has()メソッドはfalseを返します。
2. WeakMap.prototype.get(key)
指定したキーに関連付けられた値を返します。該当するキーが存在しない場合はundefinedを返します。
3. WeakMap.prototype.has(key)
指定したキーに値が関連付けられているかどうかを真偽値(Boolean)で判定します。値が存在すればtrue、存在しなければfalseを返します。
4. WeakMap.prototype.set(key, value)
WeakMapオブジェクト内の指定したキーに値を設定します。戻り値としてWeakMapオブジェクト自身を返すため、メソッドチェーンでの記述も可能です。
使用例
const wm = new WeakMap();
const obj = {};
wm.set(obj, 'サンプルデータ'); // 値を設定
console.log(wm.get(obj)); // 'サンプルデータ'
console.log(wm.has(obj)); // true
wm.delete(obj); // キーと値を削除
console.log(wm.has(obj)); // false
補足:WeakMapの特徴
通常のMapと異なり、WeakMapのキーは列挙できないため、sizeプロパティやforEach()、イテレーション系のメソッドは用意されていません。この特性により、キャッシュやプライベートデータの管理など、オブジェクトのライフサイクルに連動したメモリ効率の良いデータ保持が実現できます。
-
JavaScriptのプロトタイプにメソッドを追加する方法
JavaScriptのプロトタイプにメソッドを追加する方法JavaScriptでは、コンストラクタ関数のprototypeプロパティにメソッドを追加することで、そのコンストラクタから生成されたすべてのインスタンスが同じメソッドを共有できるようになります。各インスタンスに個別にメソッドを定義する必要がなくなるため、メモリの使用量を抑えられ、コードの保守性も向上します。以下は、JavaScriptのプロトタイプにメソッドを追加するコード例です。コード例<!DOCTYPE html> <html lang="ja"> <head> <me
-
JavaScriptでプロトタイプを使ってメソッドを共有する方法
JavaScriptにおけるメソッドの共有JavaScriptでは、メソッドをオブジェクト(コンストラクタ関数)のprototypeプロパティに定義することで、複数のインスタンス間でそのメソッドを共有できます。通常、コンストラクタ内でthis.displayInfo = function(){...}のようにメソッドを定義すると、生成されるインスタンスごとに関数のコピーが作成され、メモリを無駄に消費します。一方、prototypeに定義すれば、関数は一度だけ生成され、すべてのインスタンスから参照・呼び出しできるようになります。これはメモリ効率の面でも大きなメリットがあります。以下は、JavaS