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"

WeakMapMap的区别 

WeakMap只接受对象作为键名(null除外),不接受其他类型的值作为键名
const map = new WeakMap();
map.set(1, 2) // 如果将数值1Symbol值作为 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的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript WeakMap

WeakMap

EcmaScript5 中的 WeakMap 实现?

javascript中的WeakMap和WeakSet

ES6 WeakMap 的实际用途是啥?

Map 和 WeakMap 数据结构