WeakMap() コンストラクター

WeakMap() コンストラクターは、キーが弱く参照されている、キーと値の組のコレクションである WeakMap オブジェクトを生成します。キーはオブジェクトでなければならず、値は任意の値を指定することができます。

WeakMap については、キー付きコレクションWeakMap オブジェクトの節を参照してください。

構文

new WeakMap([iterable])

引数

iterable

iterable は配列などの反復可能オブジェクトであり、その要素はキーと値の組 (2 要素の配列) となります。それぞれのキーと値の組は、新しい WeakMap に追加されます。 null は undefined として扱われます。

WeakMap の使用

js
const wm1 = new WeakMap(),
  wm2 = new WeakMap(),
  wm3 = new WeakMap();
const o1 = {},
  o2 = function () {},
  o3 = window;

wm1.set(o1, 37);
wm1.set(o2, "azerty");
wm2.set(o1, o2); // 値は何でもよく、オブジェクトでも関数でもよい
wm2.set(o3, undefined);
wm2.set(wm1, wm2); // キーと値はあらゆるオブジェクトになれる。 WeakMap も同様。

wm1.get(o2); // "azerty"
wm2.get(o2); // undefined、 o2 というキーが wm2 にないため
wm2.get(o3); // undefined、 設定された値がそうであるため

wm1.has(o2); // true
wm2.has(o2); // false
wm2.has(o3); // true (値自身が 'undefined' であっても)

wm3.set(o1, 37);
wm3.get(o1); // 37

wm1.has(o1); // true
wm1.delete(o1);
wm1.has(o1); // false

仕様書

Specification
ECMAScript Language Specification
# sec-weakmap-constructor

ブラウザーの互換性

BCD tables only load in the browser

関連情報