这里重点说一下它们和对应的set、map的区别
- WeakSet
- 不能遍历,没有forEach,没有size
- 只能添加对象
- 垃圾回收器完全不考虑WeakSet对该对象的引用。
- WeakMap
- 键只能是对象
- 它的键存储的地址不会影响垃圾回收。
let obj ={
name: 'Tom',
age: 20
}
let map = new WeakMap();
obj = null; // 当obj设置为空之后,obj指向的这块内存地址就会被垃圾回收器回收
console.log(map);
打印结果如下,我们发现map中键值也没呢。