📅  最后修改于: 2023-12-03 15:01:39.141000             🧑  作者: Mango
在JavaScript中,WeakMap
对象是一种特殊的映射(Map)类型,它可以用于存储键值对,并且只能使用对象作为键。WeakMap
提供了set()
方法,可以用于向WeakMap
实例中添加新的键值对。
weakMap.set(key, value)
key
: 必需,用于作为键的对象。value
: 必需,与键关联的值。set()
方法返回更新后的WeakMap
对象。注意,WeakMap
对象是可变的,因此使用set()
方法后会改变原始对象。
以下示例演示了如何使用set()
方法向WeakMap
添加新的键值对:
const weakMap = new WeakMap();
const key1 = { name: "John" };
const value1 = { age: 30 };
const key2 = { name: "Jane" };
const value2 = { age: 25 };
weakMap.set(key1, value1);
weakMap.set(key2, value2);
在上面的示例中,我们创建了一个新的WeakMap
对象 weakMap
。然后,我们定义了两个键值对,分别使用对象 key1
和 key2
作为键,对象 value1
和 value2
作为值。最后,我们使用set()
方法将键值对添加到weakMap
中。
WeakMap
中的键必须为对象。如果你使用非对象作为键,则会引发TypeError
错误。WeakMap
是弱引用的。这意味着当键对象不再被引用时,键值对将被自动清除,且无法通过迭代器或.size
属性获取WeakMap
的大小。WeakMap
的键是不可枚举的,因此无法使用for...of
循环或forEach()
方法遍历键值对。WeakMap
的 set()
方法允许我们向WeakMap
对象中添加新的键值对。与Map
相比,WeakMap
更适用于需要将对象作为键的场景,并且具备自动垃圾回收的特性。使用WeakMap
可以更加安全地存储和检索私有数据,并且可以避免内存泄漏的风险。