javascript - 理解这个 JS WeakRef polyfill 实现

标签 javascript garbage-collection weak-references polyfills

我遇到过这个 WeakRef polyfill:ungap / weakrefs .

我很难理解它是如何工作的,尤其是第 11-14 行:

var wr = new WeakMap;
function WeakRef(value) {
    wr.set(this, value);
}

所以有一个全局的 WeakMap wr

还有一个类似于构造函数的函数WeakRef,它接受一个并将其存储在wr中,使用this ( the resulting object ) 作为键。

我的理解是 wr 全局 WeakMap 不会删除插入的 value 直到键被删除。在这种情况下,键是生成的 WeakRef 对象。

所以 value 在创建的 WeakRef 被删除之前不允许被 GC-ed。

这不会使 polyfill 成为引用吗?

最佳答案

It really is strong reference.

为什么他们不能在自述文件中提及这一点。或者至少让提到这个的问题保持开放状态??

关于javascript - 理解这个 JS WeakRef polyfill 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65976907/

相关文章:

ruby-on-rails - 使用 Unicorn + Rack 进行带外垃圾收集

c# - 在 .NET 中使用弱引用有什么好处?

c# - C# 中 coSTLy 对象的内存管理/缓存

javascript - 在 slider 内控制 HTML5 视频

java - 为什么调整 JTable 列的大小会产生垃圾?

java - 获取引用对象的对象列表

java - 具有弱键和身份哈希的 ConcurrentHashMap?

c# - 如何使用 Javascript 在按一次 Backspace 键时清除文本框?

javascript - Angular 8 - 尝试比较 '[object Object]' 时出错。仅允许数组和可迭代对象

javascript - jQuery - 触发事件而不是设置它