Skip to content

WeakMap

WeakMap is a Map variant where keys must be objects and references are weak — if no other references exist to a key object, the entry is garbage collected.

const wm = new WeakMap();
let user = { name: 'Alice' };
wm.set(user, { role: 'admin' });
console.log(wm.get(user)); // { role: 'admin' }
console.log(wm.has(user)); // true
user = null; // The WeakMap entry is auto-removed!
  • Keys must be objects (no primitives)
  • No iteration methods (no .keys(), .values(), .forEach())
  • No .size property
  • Only .set(), .get(), .has(), .delete() available
// Private data
const privateData = new WeakMap();
class Person {
constructor(name, ssn) {
privateData.set(this, { ssn });
}
getSSN() { return privateData.get(this).ssn; }
}
// DOM element metadata (auto-cleaned on removal)
const elementData = new WeakMap();
elementData.set(btn, { clicks: 0 });
FeatureMapWeakMap
Key typesAnyObjects only
ReferencesStrongWeak
Iterable✅❌
Size✅❌