Skip to content

WeakSet

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.

const ws = new WeakSet();
let user = { name: 'Alice' };
ws.add(user);
console.log(ws.has(user)); // true
user = null; // Auto-removed from WeakSet!
  • Values must be objects (no primitives)
  • No iteration methods (no .forEach(), no for...of)
  • No .size property
  • Only .add(), .has(), .delete() available
// Prevent double-processing
const processed = new WeakSet();
function processItem(item) {
if (processed.has(item)) return;
processed.add(item);
// process...
}
// Track visited nodes in graph
const visited = new WeakSet();
function dfs(node) {
if (visited.has(node)) return;
visited.add(node);
for (const n of node.neighbors) dfs(n);
}
FeatureSetWeakSet
ValuesAny typeObjects only
ReferencesStrongWeak
Iterable✅❌
Size✅❌