ECMAScript 6 新增的“弱映射”(WeakMap)是一种新的集合类型,为这门语言带来了增强的键/ 值对存储机制。WeakMap 是 Map 的“兄弟”类型,其 API 也是 Map 的子集。WeakMap 中的“weak”(弱), 描述的是 JavaScript 垃圾回收程序对待“弱映射”中键的方式
一、 基本 API
可以使用 new 关键字实例化一个空的 WeakMap:const wm = new WeakMap();
弱映射中的键只能是 Object 或者继承自 Object 的类型,尝试使用非对象设置键会抛出 TypeError。值的类型没有限制。 如果想在初始化时填充弱映射,则构造函数可以接收一个可迭代对象,其中需要包含键/值对数组。 可迭代对象中的每个键/值都会按照迭代顺序插入新实例中:
const key1 = {id: 1}, key2 = {id: 2}, key3 = {id: 3}; // 使用嵌套数组初始化弱映射const wm1 = new WeakMap([ [key1, "val1"], [key2, "val2"], [key3, "val3"] ]); alert(wm1.get(key1)); // val1 alert(wm1.get(key2)); // val2 alert(wm1.get(key3)); // val3