WeakMap
Posted blogzhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WeakMap相关的知识,希望对你有一定的参考价值。
WeakMap
结构与Map
结构类似,用于生成键值对的集合。
// WeakMap 可以使用 set 方法添加成员
const wm1 = new WeakMap();
const key = {foo: 1};
wm1.set(key, 2);
wm1.get(key) // 2
// WeakMap 也可以接受一个数组,
// 作为构造函数的参数
const k1 = [1, 2, 3];
const k2 = [4, 5, 6];
const wm2 = new WeakMap([[k1, ‘foo‘], [k2, ‘bar‘]]);
wm2.get(k2) // "bar"
WeakMap
与Map
的区别
WeakMap
只接受对象作为键名(null
除外),不接受其他类型的值作为键名
const map = new WeakMap();
map.set(1, 2) // 如果将数值1
和Symbol
值作为 WeakMap 的键名,都会报错
// TypeError: 1 is not an object!
map.set(Symbol(), 2)
// TypeError: Invalid value used as weak map key
map.set(null, 2)
// TypeError: Invalid value used as weak map key
没有遍历操作(即没有keys()
、values()
和entries()
方法),也没有size
属性
const wm = new WeakMap();
// size、forEach、clear 方法都不存在
wm.size // undefined
wm.forEach // undefined
wm.clear // undefined
以上是关于WeakMap的主要内容,如果未能解决你的问题,请参考以下文章