Our volunteers haven't translated this article into עברית yet. Join us and help get the job done!
The WeakSet
object lets you store weakly held objects in a collection.
Syntax
new WeakSet([iterable]);
Parameters
- iterable
- If an iterable object is passed, all of its elements will be added to the new
WeakSet
. null is treated as undefined.
Description
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:
- In contrast to
Sets
,WeakSets
are collections of objects only and not of arbitrary values of any type. - The
WeakSet
is weak: References to objects in the collection are held weakly. If there is no other reference to an object stored in theWeakSet
, they can be garbage collected. That also means that there is no list of current objects stored in the collection.WeakSets
are not enumerable.
Properties
WeakSet.length
- The value of the
length
property is 0. WeakSet.prototype
- Represents the prototype for the
Set
constructor. Allows the addition of properties to allWeakSet
objects.
WeakSet
instances
All WeakSet
instances inherit from WeakSet.prototype
.
Properties
WeakSet.prototype.constructor
- Returns the function that created an instance's prototype. This is the
WeakSet
function by default.
Methods
WeakSet.prototype.add(value)
- Appends a new object with the given value to the
WeakSet
object. WeakSet.prototype.delete(value)
- Removes the element associated to the
value
.WeakSet.prototype.has(value)
will returnfalse
afterwards. WeakSet.prototype.has(value)
- Returns a boolean asserting whether an element is present with the given value in the
WeakSet
object or not. WeakSet.prototype.clear()
Removes all elements from theWeakSet
object.
Examples
Using the WeakSet
object
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
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'WeakSet' in that specification. |
Standard | Initial definition. |
ECMAScript 2017 Draft (ECMA-262) The definition of 'WeakSet' in that specification. |
Draft |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 36 | 34 (34) | No support | 23 | 9 |
new WeakSet(iterable) |
38 | 34 (34) | No support | 25 | 9 |
Constructor argument: new WeakSet(null) |
(Yes) | 37 (37) | ? | ? | 9 |
Monkey-patched add() in Constructor |
(Yes) | 37 (37) | ? | ? | 9 |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | No support | 34.0 (34) | No support | No support | 9 |
new WeakMap(iterable) |
No support | 34.0 (34) | No support | No support | 9 |
Constructor argument: new WeakSet(null) |
? | (Yes) | ? | ? | 9 |
Monkey-patched add() in Constructor |
? | (Yes) | ? | ? | 9 |
See also
Document Tags and Contributors
Tags:
Contributors to this page:
fscholz,
danwellman,
malyw,
Jeremie,
m_gol,
arai,
realityking,
claudepache,
teoli,
phistuck,
sanderd17
Last updated by:
fscholz,