WeakMap and WeakSet(弱映射和弱集合)

通常,当对象、数组这类数据结构在内存中时,它们的子元素,如对象的属性、数组的元素都是可以访问的。例如,如果把一个对象放入到数组中,那么只要这个数组存在,那么这个对象也就存在,即使没有其他对该对象的引用。

let john = { name: "John" };

let array = [ john ];

john = null;

// 覆盖引用 // 前面由 john 所引用的那个对象被存储在了 array 中 // 所以它不会被垃圾回收机制回收

WeakMap

WeakMap 和 Map 的第一个不同点就是,WeakMap 的键必须是对象,不能是原始值:

        let weakmap =new  WeakMap();         let obj = {};         weakmap.set(obj,123);         alert(weakmap.get(obj)) 现在,如果我们在 weakMap 中使用一个对象作为键,并且没有其他对这个对象的引用 —— 该对象将会被从内存(和map)中自动清除。
上一篇:5月20号洛谷题单刷题总结(模拟算法和高精度)


下一篇:django模型使用