WeakSet.prototype.add()

Baseline Widely available

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

The add() method of WeakSet instances inserts the specified value into this set, if it is not already present.

Try it

const weakset = new WeakSet();
const object = {};

weakset.add(object);
console.log(weakset.has(object));
// Expected output: true

try {
  weakset.add(1);
} catch (error) {
  console.log(error);
  // Expected output (Chrome): TypeError: Invalid value used in weak set
  // Expected output (Firefox): TypeError: WeakSet value must be an object, got 1
  // Expected output (Safari): TypeError: Attempted to add a non-object key to a WeakSet
}

Syntax

js
add(value)

Parameters

value

The value to add to the WeakSet object. Must be either an object or a non-registered symbol. Objects are compared by reference, not by value.

Return value

The WeakSet object.

Exceptions

TypeError

Thrown if value is not an object or a non-registered symbol.

Examples

Using add()

js
const ws = new WeakSet();

ws.add(window); // add the window object to the WeakSet

ws.has(window); // true

// WeakSet only takes objects as arguments
ws.add(1);
// results in "TypeError: Invalid value used in weak set" in Chrome
// and "TypeError: 1 is not a non-null object" in Firefox

Specifications

Specification
ECMAScript® 2026 Language Specification
# sec-weakset.prototype.add

Browser compatibility

See also