Есть ли разница в работе сборщика мусора в данных случаях?
1-ый варинт
let object = {
data: "Важные данные"
};
let { proxy, revoke } = Proxy.revocable(object, {});
// передаём прокси куда-нибудь вместо оригинального объекта...
alert(proxy.data); // Важные данные
// позже в коде
revoke();
// прокси больше не работает (отключён)
alert(proxy.data); // Ошибка
Здесь после
// позже в коде
revoke();
прокси объект становится недостижимым?
2-ой с использованием WeakMap
let revokes = new WeakMap();
let object = {
data: "Важные данные"
};
let { proxy, revoke } = Proxy.revocable(object, {});
alert(proxy.data); // Важные данные
revokes.set(proxy, revoke);
// ..позже в коде..
revoke = revokes.get(proxy);
revoke();
alert(proxy.data); // Ошибка (прокси отключён)
Здесь после
// ..позже в коде..
revoke = revokes.get(proxy);
revoke();
прокси объект становится недостижимым?