Introduction
A WeakMap is a Map that doesn’t
prevent its keys from being garbage-collected. That means that you can
associate data with objects without having to
worry about memory leaks.
Example
//----- Manage listeners
const _objToListeners = new WeakMap ();
function addListener ( obj , listener ) {
if ( ! _objToListeners. has (obj)) {
_objToListeners. set (obj, new Set ());
}
_objToListeners. get (obj). add (listener);
}
function triggerListeners ( obj ) {
const listeners = _objToListeners. get (obj);
if (listeners) {
for ( const listener of listeners) {
listener ();
}
}
}
//----- Example: attach listeners to an object
const obj = {};
addListener (obj, () => console. log ( 'hello' ));
addListener (obj, () => console. log ( 'world' ));
//----- Example: trigger listeners
triggerListeners (obj);