WeakMap
и WeakSet
являются вариантами Map
и Set
, но с одним отличием — они не предотвращают удаление своих элементов из памяти, если на них больше нет ссылок. Пример использования WeakMap
и WeakSet
:
let weakMap = new WeakMap();
let obj1 = {};
let obj2 = {};
weakMap.set(obj1, "value1");
weakMap.set(obj2, "value2");
console.log(weakMap.has(obj1)); // true
obj1 = null;
console.log(weakMap.has(obj1)); // false
let weakSet = new WeakSet();
let obj3 = {};
let obj4 = { name: "John" };
weakSet.add(obj3);
weakSet.add(obj4);
console.log(weakSet.has(obj4)); // true
obj4 = null;
console.log(weakSet.has(obj4)); // false