WeakMap and WeakSet hold weak references to objects, allowing garbage collection when no other references exist. Here's how to use them.
WeakMap Basics#
Private Data Pattern#
Caching with WeakMap#
DOM Element Data#
WeakSet Basics#
Object Tracking#
Circular Reference Detection#
Instance Validation#
Event Listener Tracking#
Memoization with Object Keys#
Metadata Association#
Comparison Table#
When to Use#
Best Practices#
WeakMap:
✓ Private class data
✓ Object-keyed caches
✓ DOM element associations
✓ Metadata storage
WeakSet:
✓ Object tracking flags
✓ Instance validation
✓ Visited/processed tracking
✓ Circular detection
Memory:
✓ Let GC handle cleanup
✓ Don't hold other references
✓ Use for large object graphs
✓ Consider for event systems
Avoid:
✗ Expecting iteration
✗ Using for primitives
✗ Relying on size
✗ Overcomplicating simple cases
Conclusion#
WeakMap and WeakSet are specialized collections for object-only keys that don't prevent garbage collection. Use WeakMap for private data, caching, and metadata association. Use WeakSet for tracking object state and validation. They're essential for preventing memory leaks in long-running applications, especially when working with DOM elements or large object graphs.