WeakSet
WeakSet
Section titled “WeakSet”Introduction
Section titled “Introduction”WeakSet is a Set variant where values must be objects and references are weak — if no other references exist, the object can be garbage collected and automatically removed.
Basic Usage
Section titled “Basic Usage”const ws = new WeakSet();let user = { name: 'Alice' };
ws.add(user);console.log(ws.has(user)); // true
user = null; // Auto-removed from WeakSet!Limitations
Section titled “Limitations”- Values must be objects (no primitives)
- No iteration methods (no
.forEach(), nofor...of) - No
.sizeproperty - Only
.add(),.has(),.delete()available
Use Cases
Section titled “Use Cases”// Prevent double-processingconst processed = new WeakSet();function processItem(item) { if (processed.has(item)) return; processed.add(item); // process...}
// Track visited nodes in graphconst visited = new WeakSet();function dfs(node) { if (visited.has(node)) return; visited.add(node); for (const n of node.neighbors) dfs(n);}WeakSet vs Set
Section titled “WeakSet vs Set”| Feature | Set | WeakSet |
|---|---|---|
| Values | Any type | Objects only |
| References | Strong | Weak |
| Iterable | ✅ | ❌ |
| Size | ✅ | ❌ |