半城柳色半声笛

文章 0 评论 0 浏览 25

半城柳色半声笛 2022-05-04 13:57:49

关于weakMap与weakSet弱引用该如何理解

这是周爱民老师在极客时间 《javascript核心原理》专栏给出给我的答案, 分享给大家。

弱引用是向weakSet/weakMap中添加一个目标对象的引用,但添加是目标对象的引用计数不增加。比较来说:

var x = {}; // <-右边的对象字面量的引用计数加1
var y = x; // <- 再加1
weakSet.add(x); // <-不加1
weakSet.add(y); // <-也不加1
delete x; // 减1
delete y; // 再减1
...

到这里,由于对象的引用计数为0了,所以weakSet中的那个被add()进去的x、y就自动被回收了。——weakSet/weakMap具备这种机制。

所以weakSet/weakMap没有size这个属性,它不安全。——你刚读了它的值,它自己自动回收了一下,就又变掉了。

如果感兴趣大家可以通过链接去订阅(只想表示很硬核)http://gk.link/a/10fj0

第 4 题:介绍下 Set、Map、WeakSet 和 WeakMap 的区别?

半城柳色半声笛 2022-05-04 13:56:11

KFC

第 73 题: 介绍下 BFC、IFC、GFC 和 FFC

我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文