The WeakMap()
constructor creates WeakMap
objects which are a collections of key/value pairs in which the keys are weakly referenced. The keys must be objects and the values can be arbitrary values.
You can learn more about WeakMap
s in the section WeakMap object in Keyed collections.
Syntax
new WeakMap([iterable])
Parameters
iterable
- Iterable is an Array or other iterable object whose elements are key-value pairs (2-element Arrays). Each key-value pair will be added to the new WeakMap. null is treated as undefined.
Examples
Using WeakMap
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); // a value can be anything, including an object or a function wm2.set(o3, undefined); wm2.set(wm1, wm2); // keys and values can be any objects. Even WeakMaps! wm1.get(o2); // "azerty" wm2.get(o2); // undefined, because there is no key for o2 on wm2 wm2.get(o3); // undefined, because that is the set value wm1.has(o2); // true wm2.has(o2); // false wm2.has(o3); // true (even if the value itself is 'undefined') wm3.set(o1, 37); wm3.get(o1); // 37 wm1.has(o1); // true wm1.delete(o1); wm1.has(o1); // false
Specifications
Specification |
---|
ECMAScript (ECMA-262) The definition of 'WeakMap constructor' in that specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WeakMap() constructor | Chrome Full support 36 | Edge Full support 12 | Firefox Full support 6 | IE Full support 11 | Opera Full support 23 | Safari Full support 8 | WebView Android Full support 37 | Chrome Android Full support 36 | Firefox Android Full support 6 | Opera Android Full support 24 | Safari iOS Full support 8 | Samsung Internet Android Full support 3.0 | nodejs
Full support
0.12
|
new WeakMap(iterable) | Chrome Full support 38 | Edge Full support 12 | Firefox Full support 36 | IE No support No | Opera Full support 25 | Safari Full support 9 | WebView Android Full support 38 | Chrome Android Full support 38 | Firefox Android Full support 36 | Opera Android Full support 25 | Safari iOS Full support 9 | Samsung Internet Android Full support 3.0 | nodejs Full support 0.12 |
WeakMap() without new throws | Chrome Full support 36 | Edge Full support 12 | Firefox Full support 42 | IE Full support 11 | Opera Full support 23 | Safari Full support 9 | WebView Android Full support 37 | Chrome Android Full support 36 | Firefox Android Full support 42 | Opera Android Full support 24 | Safari iOS Full support 9 | Samsung Internet Android Full support 3.0 | nodejs Full support 0.12 |
new WeakMap(null) | Chrome Full support 36 | Edge Full support 12 | Firefox Full support 37 | IE Full support 11 | Opera Full support 23 | Safari Full support 8 | WebView Android Full support 37 | Chrome Android Full support 36 | Firefox Android Full support 37 | Opera Android Full support 24 | Safari iOS Full support 8 | Samsung Internet Android Full support 3.0 | nodejs
Full support
0.12
|
Legend
- Full support
- Full support
- No support
- No support
- User must explicitly enable this feature.
- User must explicitly enable this feature.