WeakMap() コンストラクター - JavaScript | MDN

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.

WeakMap() コンストラクターは、WeakMap オブジェクトを生成します。

構文

js

new WeakMap()
new WeakMap(iterable)

メモ: WeakMap()new を付けた場合のみ構築できます。new なしで呼び出そうとすると TypeError が発生します。

引数

iterable

Array またはその他の反復可能オブジェクト で、2 要素の配列風オブジェクトを生成するものです。最初の要素は WeakMap のキーとして使用される値であり、2 番目の要素はそのキーに関連付ける値です。それぞれのキーと値の組は新しい WeakMap に追加されます。nullundefined として扱われます。

WeakMap の使用

js

const wm1 = new WeakMap();
const wm2 = new WeakMap();
const wm3 = new WeakMap();
const o1 = {};
const o2 = () => {};
const 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® 2026 Language Specification
# sec-weakmap-constructor

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on by MDN contributors.