@kirillleogky

Есть ли разница в работе сборщика мусора?

Есть ли разница в работе сборщика мусора в данных случаях?

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();

прокси объект становится недостижимым?
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
@forspamonly2
Once a proxy is revoked, it will remain revoked and can be garbage collected.

https://developer.mozilla.org/en-US/docs/Web/JavaS...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы