This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
The has() method of WeakSet instances returns a boolean indicating whether the specified value exists in this WeakSet or not.
const weakset = new WeakSet();
const object1 = {};
const object2 = {};
weakset.add(object1);
console.log(weakset.has(object1));
// Expected output: true
console.log(weakset.has(object2));
// Expected output: false
has(value)
Returns true if the specified value exists in the WeakSet object; otherwise false. Always returns false if value is not an object or a non-registered symbol.
const ws = new WeakSet();
const obj = {};
ws.add(window);
ws.has(window); // returns true
ws.has(obj); // returns false
// Storing a non-registered symbol
const sym = Symbol("foo");
ws.add(sym);
ws.add(Symbol.iterator);
| 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 | |
has |
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/has