Widely available すべての主要ブラウザで対応済み。安心して使用可能。

概要

WeakMap はキーにオブジェクトのみを使用でき、キーへの参照が他に存在しない場合はガベージコレクションの対象になります。プライベートデータやメタデータの関連付けに使用します。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
36
12
6
8
36
8

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

36
12
6
8
36
8
WeakMap.WeakMap.iterable allowed

`新しい WeakMap(反復可能)`

38
12
36
9
38
9
WeakMap.WeakMap.null allowed

`新しいWeakMap(null)`

36
12
37
8
36
8

delete() は WeakMap インスタンスのメソッドで、この WeakMap からキーで指定された項目を削除します。

36
12
6
8
36
8

get() は WeakMap インスタンスのメソッドで、この WeakMap 内のキーに対応する値を返します。該当するキーが存在しない場合は undefined を返します。オブジェクトの値は、コピーではなく、最初に格納されたときの参照と同じものが返されます。そのため、返されたオブジェクトに変更を行うと、その参照が保持されている場所(WeakMap の中を含む)すべてに反映されます。

36
12
6
8
36
8

has() は WeakMap インスタンスのメソッドで、指定されたキーをもつ要素が WeakMap オブジェクト内に存在するかどうかを示す論理値を返します。

36
12
6
8
36
8

set() は WeakMap インスタンスのメソッドで、指定されたキーと値をもつ新しい項目を WeakMap オブジェクトへ追加します。すでにそのキーが存在する場合は、項目を更新します。

36
12
6
8
36
8
WeakMap.symbol as keys

未登録のシンボルをキーとして使用

109
109
146
16.4
109
16.4
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)
注釈 1件
実装メモ
  • Firefox 38 より前のバージョンでは、このメソッドは key パラメータがオブジェクトでない場合に `TypeError` を投げていた。これはバージョン 38 以降で修正され、ES2015 標準に従って `false` を返すようになりました。
注釈 1件
削除済み
  • Firefox 38 より前のバージョンでは、このメソッドは key パラメータがオブジェクトでない場合に `TypeError` を投げていた。しかし、ES2015 仕様では、代わりに `undefined` を返すように指定されています。さらに、`WeakMap.prototype.get` はオプションの第2引数をフォールバック値として受け入れていましたが、これは標準ではありません。どちらの非標準的な動作もバージョン38以降では削除されている。
注釈 1件
実装メモ
  • Firefox 38 より前のバージョンでは、このメソッドは key パラメータがオブジェクトでない場合に `TypeError` を投げていた。これはバージョン 38 以降で修正され、ES2015 標準に従って `false` を返すようになりました。
注釈 1件
実装メモ
  • Firefox 38 より前のバージョンでは、このメソッドは key パラメータがオブジェクトでない場合に `TypeError` を投げていた。これはバージョン 38 以降で修正され、ES2015 標準に従って `false` を返すようになりました。

基本構文

JAVASCRIPT
const privateData = new WeakMap();

class User {
  constructor(name) {
    privateData.set(this, { name });
  }
  getName() {
    return privateData.get(this).name;
  }
}

ライブデモ

Manage private data

instanspart from is akses in info WeakMap to retain..

プレビュー全画面表示

Attach metadata to DOM elements

relatedde-ta.. with DOM objectbody change to, WeakMap.

プレビュー全画面表示

Check whether an object is processed

efficiency to manage.. with object that processed or or WeakMap.

プレビュー全画面表示

実務での使いどころ

  • WeakMap の活用

    キーがオブジェクトのみで、ガベージコレクションを妨げない Map。プライベートデータの格納に使用。

注意点

  • 特になし。すべての主要ブラウザで安定して動作する。

アクセシビリティ

  • JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。

Powered by web-features