Удаление в 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));