WeakRefWeakRef (появился в ES2021) содержит слабую ссылку на объект, что означает, что он не препятствует сборщику мусора JavaScript освобождать память этого объекта, когда не существует других сильных ссылок.
WeakRef полезным, когда ты хочешь опционально сохранить доступ к объекту без контроля над его временем жизниИспользуй метод .deref() для получения объекта:
const obj = { name: "example" };
const weakRef = new WeakRef(obj);
const value = weakRef.deref();
// Возвращает объект, если он всё ещё в памяти, или `undefined`, если он уже собран сборщиком мусора
Всегда проверяй возвращаемое значение .deref() перед использованием, так как объект может уже не существовать.
FinalizationRegistryWeakRef обычно используется вместе с FinalizationRegistry, который позволяет зарегистрировать колбэк очистки, вызываемый после того, как объект собран сборщиком мусора:
const registry = new FinalizationRegistry((key) => {
cache.delete(key);
});
registry.register(obj, "cacheKey");
Примечание: точное время срабатывания сборщика мусора недетерминировано, поэтому
WeakRefследует использовать только когда твоя логика может безопасно обработать отсутствие объекта.
WeakRef предотвращает сборку мусора для объекта, на который он ссылается, пока существует слабая ссылка, подобно тому, как работают обычные ссылки.
Новый — ещё не проверен сообществом
Вы