WeakMap cung cấp một cách thức để mở rộng các đối tượng từ bên ngoài mà không can thiệp vào việc thu gom rác (garbage collection). Bất cứ khi nào bạn muốn mở rộng một đối tượng nhưng không thể vì nó bị bịt kín - hoặc từ một nguồn bên ngoài - thì một WeakMap có thể được áp dụng.
WeakMap chỉ có trong ES6 trở lên.
WeakMap là một tập hợp các cặp khóa và giá trị, trong đó khóa phải là một đối tượng.
var map = new WeakMap();
var pavloHero = {
first: "Pavlo",
last: "Hero"
};
var gabrielFranco = {
first: "Gabriel",
last: "Franco"
};
map.set(pavloHero, "This is Hero");
map.set(gabrielFranco, "This is Franco");
console.log(map.get(pavloHero)); //This is Hero
Khía cạnh thú vị của WeakMap là nó giữ một tham chiếu yếu (weak reference) đến khóa bên trong map. Tham chiếu yếu có nghĩa là nếu đối tượng bị phá hủy, bộ thu gom rác (garbage collector) sẽ xóa toàn bộ entry khỏi WeakMap, do đó sẽ giải phóng bộ nhớ.