xxxxxxxxxx
const weakMap = new WeakMap();
console.log(weakMap); // WeakMap {}
let obj = {};
// adding object (element) to WeakMap
weakMap.set(obj, 'hello');
console.log(weakMap); // WeakMap {{} => "hello"}
xxxxxxxxxx
/*
SIMPLE EXPLANATION:
The WeakMap takes only objects as keys.
When one object is not being referred to anymore, it and its
associated value will get removed from the WeakMap.
The WeakSet functions similarly.
Its values are unique and are only objects.
When one object is not being referred to anymore, it will get removed
from the WeakSet.
*/
xxxxxxxxxx
const weakMap = new WeakMap();
console.log(weakMap); // WeakMap {}
let obj = {};
// adding object (element) to WeakMap
weakMap.set(obj, 'hello');
console.log(weakMap); // WeakMap {{} => "hello"}
// get the element of a WeakMap
console.log(weakMap.get(obj)); // hello
// check if an element is present in WeakMap
console.log(weakMap.has(obj)); // true
// delete the element of WeakMap
console.log(weakMap.delete(obj)); // true
console.log(weakMap); // WeakMap {}
xxxxxxxxxx
const weakMap = new WeakMap();
console.log(weakMap); // WeakMap {}
let obj = {};
// adding object (element) to WeakMap
weakMap.set(obj, 'hello');
console.log(weakMap); // WeakMap {{} => "hello"}
// get the element of a WeakMap
console.log(weakMap.get(obj)); // hello
// check if an element is present in WeakMap
console.log(weakMap.has(obj)); // true
// delete the element of WeakMap
console.log(weakMap.delete(obj)); // true
console.log(weakMap); // WeakMap {}
xxxxxxxxxx
// Create a WeakMap
const weakMap = new WeakMap();
// Create some objects
const obj1 = {};
const obj2 = {};
// Associate data with objects in the WeakMap
weakMap.set(obj1, "Data for obj1");
weakMap.set(obj2, "Data for obj2");
// Retrieve data using objects as keys
console.log(weakMap.get(obj1)); // "Data for obj1"
console.log(weakMap.get(obj2)); // "Data for obj2"
// Let's simulate losing all references to obj1
obj1 = null;
// obj1 is no longer accessible, so it can be garbage collected
// This means the associated data is also automatically removed
console.log(weakMap.get(obj1)); // undefined
console.log(weakMap.get(obj2)); // "Data for obj2" (still accessible)