weakSet的弱的意义
上图阐述的是这个弱的概念,如果这样obj = null ,GC检测机制是会回收你放在weakSet的内容的,因为你定义的是弱引用。
使用场景
// weakSet的使用场景:
// 目的:把ruuning变成私有方法,不允许别的调用,
const weakSet = new WeakSet();
class Person {
constructor() {
// 每次调用构造器都会创建一个this然后赋值给对象
weakSet.add(this);
}
running() {
if (!weakSet.has(this)) throw new Error("私有方法不可调用");
console.log("running", this);
}
}
const p = new Person();
p.running();
p.running.call({ name: "hope" });
**//此时想要释放这个对象的内存,直接 p = null 就可以了,weakSet由于是弱引用就直接释放。
//但是如果使用的是 Set 的话,就是强引用,内存就不会释放,还要delete操作**。
p = null;