The WeakSet object lets you store weakly held objects in a collection.
new WeakSet([iterable]);
WeakSet. null is treated as undefined.var ws = new WeakSet();
var obj = {};
var foo = {};
ws.add(window);
ws.add(obj);
ws.has(window); // true
ws.has(foo); // false, foo has not been added to the set
ws.delete(window); // removes window from the set
ws.has(window); // false, window has been removed WeakSet objects are collections of objects. An object in the WeakSet may only occur once; it is unique in the WeakSet's collection.
The main differences to the Set object are:
Sets, WeakSets are collections of objects only and not of arbitrary values of any type.WeakSet is weak: References to objects in the collection are held weakly. If there is no other reference to an object stored in the WeakSet, they can be garbage collected. That also means that there is no list of current objects stored in the collection. WeakSets are not enumerable.WeakSet.lengthlength property is 0.WeakSet.prototypeSet constructor. Allows the addition of properties to all WeakSet objects.WeakSet instancesAll WeakSet instances inherit from WeakSet.prototype.
WeakSet.prototype.constructorWeakSet function by default.WeakSet.prototype.add(value)WeakSet object.WeakSet.prototype.delete(value)value. WeakSet.prototype.has(value) will return false afterwards.WeakSet.prototype.has(value)WeakSet object or not.WeakSet.prototype.clear() WeakSet object.| Specification | Status | Comment |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'WeakSet' in that specification. | Standard | Initial definition. |
| ECMAScript Latest Draft (ECMA-262) The definition of 'WeakSet' in that specification. | Living Standard |
| Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|---|
| Basic support | 36 | 12 | 34 | No | 23 | 9 |
new WeakSet(iterable) |
38 | 12 | 34 | No | 25 | 9 |
new WeakSet(null) |
Yes | 12 | 37 | No | ? | 9 |
add |
36 | Yes | 34 | No | 23 | 9 |
clear |
36 — 43 | No | 34 — 46 | No | 25 — 30 | No |
delete |
36 | Yes | 34 | No | 23 | 9 |
has |
36 | Yes | 34 | No | 23 | 9 |
prototype |
36 | Yes | 34 | No | 23 | 9 |
| Feature | Android webview | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
|---|---|---|---|---|---|---|---|
| Basic support | 36 | 36 | 12 | 34 | No | 23 | 9 |
new WeakSet(iterable) |
38 | 38 | 12 | 34 | No | 25 | 9 |
new WeakSet(null) |
Yes | Yes | 12 | 37 | No | ? | 9 |
add |
36 | 36 | Yes | 34 | No | 23 | 9 |
clear |
36 — 43 | 36 — 43 | No | 34 — 46 | No | 25 — 30 | No |
delete |
36 | 36 | Yes | 34 | No | 23 | 9 |
has |
36 | 36 | Yes | 34 | No | 23 | 9 |
prototype |
36 | 36 | Yes | 34 | No | 23 | 9 |
© 2005–2018 Mozilla Developer Network and individual 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