Skip to content

Commit af09f7c

Browse files
committed
Add WeakSet
1 parent 136a002 commit af09f7c

1 file changed

Lines changed: 139 additions & 0 deletions

File tree

content/JavaScript/weakset.jsdoc

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
WeakSet : Object
2+
3+
WeakSets are a collection of %%/Object|Objects%% where each
4+
object can only appear once in the set similar to %%/Set|Set%%.
5+
Unlike Set, WeakSet does not allow iterating over its values.
6+
If WeakSet would be the only object holding on to the value,
7+
the value will be released from memory.
8+
9+
The values stored in WeakSet cannot be primitive values
10+
(%%/Boolean|Boolean%%,
11+
%%/Number|Number%%,
12+
%%/String|String%%,
13+
or
14+
%%/undefined|undefined%%).
15+
16+
Version:
17+
ECMAScript 6
18+
19+
----
20+
new WeakSet() : WeakSet
21+
22+
Creates an empty WeakSet.
23+
24+
<example>
25+
var value1 = { foo: 1 };
26+
var value2 = { bar: ['a', 'b', 'c'] };
27+
28+
var x = new WeakSet();
29+
x.add(value1);
30+
31+
console.log(x.has(value1));
32+
console.log(x.has(value2));
33+
34+
</example>
35+
36+
----
37+
new WeakSet(iterable : Object) : WeakSet
38+
39+
Creates a WeakSet by iterating over **iterable** and adding
40+
each value to the WeakSet.
41+
42+
<example>
43+
var value1 = { foo: 1 };
44+
var value2 = { bar: ['a', 'b', 'c'] };
45+
46+
var fromArray = new WeakSet([value1, value2]);
47+
48+
console.log(fromArray.has(value1));
49+
console.log(fromArray.has(value2));
50+
51+
var generator = function*() {
52+
yield value1;
53+
yield value2;
54+
};
55+
56+
var fromGenerator = new WeakSet(generator());
57+
58+
console.log(fromGenerator.has(value1));
59+
console.log(fromGenerator.has(value2));
60+
</example>
61+
62+
----
63+
prototype.add(value : Object) : Set
64+
65+
Stores **value** in **this**. If **value** is already stored,
66+
there is no change to the WeakSet.
67+
Returns **this**.
68+
69+
<example>
70+
var value1 = { foo: 1 };
71+
var value2 = { bar: ['a', 'b', 'c'] };
72+
73+
var x = new WeakSet([value1]);
74+
75+
console.log(x.has(value1));
76+
console.log(x.has(value2));
77+
78+
x.add(value2);
79+
console.log(x.has(value2));
80+
</example>
81+
82+
----
83+
prototype.clear() : undefined
84+
85+
Clears all values from **this**.
86+
87+
<example>
88+
var value1 = { foo: 1 };
89+
var value2 = { bar: ['a', 'b', 'c'] };
90+
91+
var x = new WeakSet([value1, value2]);
92+
93+
console.log(x.has(value1));
94+
console.log(x.has(value2));
95+
96+
x.clear();
97+
98+
console.log(x.has(value1));
99+
console.log(x.has(value2));
100+
</example>
101+
102+
----
103+
prototype.delete(value : Object) : Boolean
104+
105+
Removes **value* from **this**.
106+
Returns **true** if **value** was in **this** before deleting it.
107+
108+
<example>
109+
var value1 = { foo: 1 };
110+
var value2 = { bar: ['a', 'b', 'c'] };
111+
112+
var x = new WeakSet([value1, value2]);
113+
114+
console.log('has value1 = ' + x.has(value1));
115+
console.log('has value2 = ' + x.has(value2));
116+
117+
console.log('deleted value2 = ' + x.delete(value2));
118+
119+
console.log('has value1 = ' + x.has(value1));
120+
console.log('has value2 = ' + x.has(value2));
121+
122+
console.log('deleted value2 = ' + x.delete(value2)); // Already deleted
123+
</example>
124+
125+
----
126+
prototype.has(value : Object) : Boolean
127+
128+
Returns **true** if the set contains **value**.
129+
130+
<example>
131+
var value1 = { foo: 1 };
132+
var value2 = { bar: ['a', 'b', 'c'] };
133+
134+
var x = new WeakSet([value1]);
135+
136+
console.log(x.has(value1));
137+
console.log(x.has(value2));
138+
</example>
139+

0 commit comments

Comments
 (0)