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.
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
}
add(value)
valueThe 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.
The WeakSet object.
TypeErrorThrown if value is not an object or a non-registered symbol.
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
| Desktop | Mobile | Server | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
add |
36 | 12 | 34 | 23 | 9 | 36 | 34 | 24 | 9 | 3.0 | 37 | 9 | 1.0.0 | 1.0 | 0.12.0 |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/add