WeakMap & WeakSet
Introduction to Weak Collections
WeakMap and WeakSet are special collections that hold "weak" references to their keys/elements. This means they don't prevent garbage collection of their contents, making them ideal for metadata storage without memory leaks.
Key Limitation: WeakMap keys and WeakSet values MUST be objects. Primitive values (strings, numbers, etc.) are not allowed.
1. WeakMap Basics
JavaScript Editor
WeakMap Methods:
set(key, value)- Add key-value pairget(key)- Retrieve valuehas(key)- Check existencedelete(key)- Remove entry
3. Garbage Collection Behavior
JavaScript Editor
The key difference from Map/Set is automatic cleanup when objects are no longer referenced.
5. Cache Implementation
JavaScript Editor
WeakMap is perfect for caching where cache should automatically clear.
7. Map vs WeakMap Comparison
JavaScript Editor
2. WeakSet Basics
JavaScript Editor
WeakSet Methods:
add(value)- Add objecthas(value)- Check existencedelete(value)- Remove object
4. Practical Use Cases
JavaScript Editor
Perfect for private class data and DOM element metadata.
6. WeakSet Use Cases
JavaScript Editor
Great for tracking objects without preventing garbage collection.
When to Use Weak Collections
| Use Case | Recommended Collection | Reason |
|---|---|---|
| Private class data | WeakMap | Automatic cleanup when instance is garbage collected |
| DOM element metadata | WeakMap | No memory leaks when elements removed from DOM |
| Object caching | WeakMap | Cache clears when objects no longer needed |
| Tracking processed objects | WeakSet | Automatic removal from tracking set |
| Circular reference prevention | WeakMap/WeakSet | Helps avoid memory leaks in complex object graphs |
| General data storage | Map/Set | When you need iteration, size, or primitive keys |