You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constmap=newWeakMap();map.set(1,2);// Uncaught TypeError: Invalid value used as weak map keymap.set(null,2);// Uncaught TypeError: Invalid value used as weak map key
ES6 系列之 WeakMap
WeakMap 特性
1.WeakMap 只接受对象作为键名
2.WeakMap 的键名所引用的对象是弱引用
就是 WeakMaps 保持了对键名所引用的对象的弱引用,即垃圾回收机制不将该引用考虑在内。只要所引用的对象的其他引用都被清除,垃圾回收机制就会释放该对象所占用的内存。也就是说,一旦不再需要,WeakMap 里面的键名对象和所对应的键值对会自动消失,不用手动删除引用。
也正是因为这样的特性,WeakMap 内部有多少个成员,取决于垃圾回收机制有没有运行,运行前后很可能成员个数是不一样的,而垃圾回收机制何时运行是不可预测的,因此 ES6 规定 WeakMap 不可遍历。
所以 WeakMap 不像 Map,一是没有遍历操作(即没有 keys()、values()和 entries()方法),也没有 size 属性,也不支持 clear 方法,所以 WeakMap 只有四个方法可用:get()、set()、has()、delete()。
WeakMap 应用
1.在 DOM 对象上保存相关数据
2.数据缓存
3.数据缓存
原文链接:ES6 系列之 WeakMap
The text was updated successfully, but these errors were encountered: