このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

WeakMap() コンストラクター

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

ブラウザーの互換性

関連情報