推荐答案
const weakMap = new WeakMap(); const key = Symbol('myKey'); weakMap.set(key, 'someValue'); console.log(weakMap.get(key)); // 输出: someValue
本题详细解读
1. 什么是 WeakMap?
WeakMap 是一种特殊的 Map,它的键必须是对象(或 Symbol),并且不会阻止垃圾回收机制回收这些键。当键对象被垃圾回收时,对应的键值对也会自动从 WeakMap 中移除。
2. 为什么可以使用 Symbol 作为 WeakMap 的键?
Symbol 是 JavaScript 中的一种原始数据类型,每个 Symbol 值都是唯一的。由于 Symbol 是不可变的且唯一的,它们可以作为 WeakMap 的键使用。与对象不同,Symbol 不会阻止垃圾回收,因此它们非常适合作为 WeakMap 的键。
3. 如何使用 Symbol 作为 WeakMap 的键?
- 首先,创建一个 WeakMap 实例。
- 然后,创建一个 Symbol 作为键。
- 使用
set
方法将 Symbol 作为键,并将值存储到 WeakMap 中。 - 使用
get
方法通过 Symbol 键来获取对应的值。
4. 示例代码解析
const weakMap = new WeakMap(); const key = Symbol('myKey'); weakMap.set(key, 'someValue'); console.log(weakMap.get(key)); // 输出: someValue
const weakMap = new WeakMap();
创建了一个新的 WeakMap 实例。const key = Symbol('myKey');
创建了一个唯一的 Symbol 作为键。weakMap.set(key, 'someValue');
将 Symbol 作为键,并将'someValue'
存储到 WeakMap 中。console.log(weakMap.get(key));
通过 Symbol 键获取存储在 WeakMap 中的值,并输出'someValue'
。
5. 注意事项
- WeakMap 的键必须是对象或 Symbol,不能是其他类型的值(如字符串、数字等)。
- 由于 WeakMap 的键是弱引用,当键对象被垃圾回收时,对应的键值对会自动从 WeakMap 中移除。
- Symbol 作为 WeakMap 的键时,不会阻止垃圾回收,因此它们非常适合用于需要弱引用的场景。