文章 0 评论 0 浏览 25
这是周爱民老师在极客时间 《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
KFC
文章 0 评论 0
接受
关于weakMap与weakSet弱引用该如何理解
弱引用是向weakSet/weakMap中添加一个目标对象的引用,但添加是目标对象的引用计数不增加。比较来说:
到这里,由于对象的引用计数为0了,所以weakSet中的那个被add()进去的x、y就自动被回收了。——weakSet/weakMap具备这种机制。
所以weakSet/weakMap没有size这个属性,它不安全。——你刚读了它的值,它自己自动回收了一下,就又变掉了。
如果感兴趣大家可以通过链接去订阅(只想表示很硬核)http://gk.link/a/10fj0
第 4 题:介绍下 Set、Map、WeakSet 和 WeakMap 的区别?