JavaScript 中的 WeakMap 是一种数据结构,它与 Map 类似,但是它存储的是键值对,其中键是对象类型,而值是任意类型。与 Map 不同的是,WeakMap 的键是弱引用,这意味着如果没有其他变量引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存。
使用 WeakMap 的主要原因是在某些情况下,我们希望存储一些与对象相关的信息,但是又不希望这些信息阻止垃圾回收机制回收对象所占用的内存。
下面是 WeakMap 的一些示例代码:
const map = new WeakMap();
const obj = {};
const val = {};
map.set(obj, val);
console.log(map.has(obj)); // true
console.log(map.get(obj)); // val
map.delete(obj);
console.log(map.has(obj)); // false
注意,WeakMap 并不是普通的数组或对象,它没有 length 属性,也不能使用 for-in 循环遍历。它只提供了四个方法:set、get、has、delete,用于存储、获取、判断和删除键值对。