js中没有很多引用类型的区分,不像java中,规定了很多引用类型,还有软引用和虚引用
js中对于引用可达的都是强引用,只有在引入了WeakMap 和 WeakSet 之后,对于他们只观察他们所引用的健
比如
const wm = new WeakMap();
{
const ref = {};
const metaData = 'foo';
wm.set(ref, metaData);
wm.get(ref))
// 返回 metaData
}
// 在这个块范围内,我们已经没有对 ref 对象的引用。
// 因此,虽然它是 wm 中的键,我们仍然可以访问,但是它能够被垃圾回收。
只要代码中没有其他代码指向这个键,那它就有可能会被GC掉,在WeakMap中访问不到。所以WeakMap 和 WeakSet 存储的内容是弱引用的