WeakMap
一般来说js引擎垃圾回收机制,有两种:
1.引用数机制,一个变量被引用,则引用数不为0,当变量引用数为0时,js垃圾回收机制才会去释放掉该变量的内存空间
2.标签机制,如果一个变量在被使用后无再次利用,js引擎垃圾回收就会对该变量打tag,对有打tag的变量进行收回,释放资源
在实际开发中,可能比较大的项目才会认真去考虑垃圾收回的问题,而在开发中,仅仅将一个变量设置为空有时候并不能有效的释放内存地址。
这时候可以用WeakMap!
WeakMap
对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,不是对象则会报错,而值可以是任意的。
使用场景
var div = document.getElementById('div');
var storeMap = new WeakMap();
storeMap.set(div);
//移除节点
div.remove();
//设置为null,此时因为设置了WeakMap,内存被释放
div = null;
通过WeakMap的set()方法,设置变量,一旦设置为null,就会相应的去释放资源。
WeakMap的接口与Map相同,但与Map相比,WeakMap的键是不可枚举的,因此其可以用来保存一些私有属性。