Widely availableSupported across all major browsers. Safe to use in production.

Overview

A WeakMap object holds key-value pairs that do not create strong references to its keys, such that value data can be associated with a key without preventing garbage collection of the key.

Browser support

Feature Desktop Mobile
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
36
12
6
8
36
8

The WeakMap() constructor creates WeakMap objects.

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

`new WeakMap(iterable)`

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

`new WeakMap(null)`

36
12
37
8
36
8

The delete() method of WeakMap instances removes the entry specified by the key from this WeakMap.

36
12
6
8
36
8

The get() method of WeakMap instances returns the value corresponding to the key in this WeakMap, or undefined if there is none. Object values are returned as the same reference that was originally stored, not as a copy, so mutations to the returned object will be reflected anywhere that reference is held, including inside the WeakMap.

36
12
6
8
36
8

The has() method of WeakMap instances returns a boolean indicating whether an entry with the specified key exists in this WeakMap or not.

36
12
6
8
36
8

The set() method of WeakMap instances adds a new entry with a specified key and value to this WeakMap, or updates an existing entry if the key already exists.

36
12
6
8
36
8
WeakMap.symbol as keys

Non-registered symbols as keys

109
109
146
16.4
109
16.4
1+Supported (version) Not supported Has note Sub-feature descriptions sourced from MDN Web Docs (CC BY-SA 2.5)
Notes 1 item(s)
Implementation note
  • Before Firefox 38, this method threw a `TypeError` when the key parameter was not an object. This has been fixed in version 38 and later to return `false` as per the ES2015 standard.
Notes 1 item(s)
Removed
  • Before Firefox 38, this method threw a `TypeError` when the key parameter was not an object. However, the ES2015 specification specifies to return `undefined` instead. Furthermore, `WeakMap.prototype.get` accepted an optional second argument as a fallback value, which is not part of the standard. Both non-standard behaviors are removed in version 38 and higher.
Notes 1 item(s)
Implementation note
  • Before Firefox 38, this method threw a `TypeError` when the key parameter was not an object. This has been fixed in version 38 and later to return `false` as per the ES2015 standard.
Notes 1 item(s)
Implementation note
  • Before Firefox 38, this method threw a `TypeError` when the key parameter was not an object. This has been fixed in version 38 and later to return `false` as per the ES2015 standard.

Syntax

JAVASCRIPT
const privateData = new WeakMap();

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

Live demo

Manage private data

instanspart from is akses in info WeakMap to retain..

PreviewFullscreen

Attach metadata to DOM elements

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

PreviewFullscreen

Check whether an object is processed

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

PreviewFullscreen

Use cases

  • Using WeakMap

    A WeakMap object holds key-value pairs that do not create strong references to its keys, such that value data can be associated with a key without preventing garbage collection of the key.

Cautions

  • No specific concerns. Stable across all major browsers.

Accessibility

  • When updating the DOM dynamically, announce important changes to assistive technology with aria-live regions.

Powered by web-features