WeakMap: key là object (weak reference), value bất kỳ. Key yếu → không cản trở GC thu hồi object key.
Use cases tránh memory leak
- Dữ liệu private cho object: Chỉ ai có reference đến Map mới truy cập được data.
- Metadata cho object thư viện: Gán data cho object bên ngoài mà không sửa đổi class gốc, tránh hidden class pollution.
- Data cho tập object nhỏ trong nhiều instance: Tránh overhead hidden class khi nhiều object cùng kiểu.
- Lưu data cho DOM node: Host object như DOM node — WeakMap tự dọn khi node bị remove.
- Mở rộng khả năng object từ bên ngoài: Thêm behavior mà không sửa class.
Điểm mạnh: Key bị GC thu hồi → entry tự biến mất khỏi WeakMap — không leak memory.