Удаление в Weakmap

Прочитав про WeakMap наткнулся на следующую фразу:

"Если мы используем объект в качестве ключа и если больше нет ссылок на этот объект,

то он будет удалён из памяти (и из объекта WeakMap) автоматически."

Но у меня есть ссылка на объект-ключ, почему же сборщик мусора удаляет мой объект-ключ?

let weakmap = new WeakMap();

let obj = {};

weakmap.set(obj,'ok');

obj = null;    

let xopa = obj; // Ссылка на объект-ключ

alert(weakmap.get(obj));  


Ответы (1 шт):

Автор решения: Алексей Шиманский

Вы уничтожаете объект obj = null; до присваивания его в переменную xopa да и в строке weakmap.get(obj) пользуетесь не тем объектом..... логично, что результат такой

let weakmap = new WeakMap();

let obj = {};

weakmap.set(obj,'ok');



let xopa = obj; // Ссылка на объект-ключ
obj = null;    
alert(weakmap.get(xopa));

→ Ссылка