各位老铁,大家好!今天咱们来聊聊JavaScript里两个挺有意思的家伙:WeakRef和FinalizationRegistry。它们就像是对象世界的“侦察兵”和“殡仪馆”,帮助我们构建更智能的缓存,并在对象生命周期结束时做一些“身后事”。 咱们先来热热身,搞清楚啥是弱引用,为啥我们需要它。 一、为啥要有弱引用?GC的爱恨情仇 JavaScript有自动垃圾回收机制(GC),简单来说,GC会定期检查哪些对象“没人要”了,然后把它们占用的内存释放掉。判断标准是:一个对象如果没有任何强引用指向它,那它就变成了孤魂野鬼,可以被回收了。 let obj = { name: ‘老王’ }; // obj是一个强引用 let anotherObj = obj; // anotherObj也是一个强引用 obj = null; // obj指向null,但anotherObj还在指向这个对象 console.log(anotherObj.name); // 输出 ‘老王’ anotherObj = null; // 现在没有任何强引用指向这个对象了,GC迟早会回收它 上面的例子里,只有当anoth …
继续阅读“分析 WeakRef 和 FinalizationRegistry (ES2021) 在构建弱引用缓存和监听对象生命周期中的高级应用,并讨论其注意事项。”