zer*_*kms 8 javascript weak-references weakmap
function f() {
const w = new WeakMap();
const o = {};
w.set(o, { v: o });
return w;
}
const weakMap = f();
Run Code Online (Sandbox Code Playgroud)
对于给定的代码,唯一的weakMap
项目是否被认为是可达的?因此,它是否会被垃圾收集?
PS:这个问题是从规范的角度提出的,而不是特定的实现.
the*_*eye 11
引用WeakMap
对象部分,
如果正在用作WeakMap键/值对的键的对象只能通过跟随在该WeakMap内开始的一系列引用来访问,则该键/值对将无法访问并自动从WeakMap中删除.
在你的情况下,唯一的方法o
是从其中一个键开始weakMap
,因为没有外部引用它.因此,它将被视为无法访问.
WeakMap实现必须检测和删除此类键/值对以及任何相关资源.
所以,它最终会被垃圾收集.
归档时间: |
|
查看次数: |
285 次 |
最近记录: |