📅  最后修改于: 2023-12-03 14:50:06.361000             🧑  作者: Mango
在 JavaScript 中,猫鼬是一种对象类型,也被称为 Map。它可以帮助您将键值对存储在一个对象中,并且可以更好地处理简单类型和对象类型。
除了标准的 HashMap 之外,JavaScript 还提供了其他几种类型的 Map,它们适用于不同的用途和场景。
类似于 Map,WeakMap 也可以存储键值对,但有一个重要的区别:键必须是对象,并且是弱引用的。这意味着如果您从内存中删除一个对象,所有与其相关联的键值对都会被自动删除。
WeakMap 对象还有一些其他的限制:
// 创建一个 WeakMap
const weakMap = new WeakMap();
// 添加一个键值对
const obj = { foo: 'bar' };
weakMap.set(obj, 'my value');
// 获取键对应的值
console.log(weakMap.get(obj)); // 输出 "my value".
Set 是一种集合类型,它存储一组唯一的值,并提供了一些有用的方法来处理这些值:
// 创建一个 Set
const mySet = new Set();
// 添加值
mySet.add('hello');
mySet.add('world');
// 判断值是否存在于集合中
console.log(mySet.has('hello')); // 输出 true.
// 删除值
mySet.delete('world');
// 获取集合中的值数量
console.log(mySet.size); // 输出 1.
在使用时,Set 可以帮助您去重,并且可以方便地检查值是否存在于集合中。
WeakSet 是一种集合类型,与 Set 类似,但它只能存储对象,并且是弱引用的。这意味着如果您从内存中删除一个对象,所有与其相关联的集合值都会被自动删除。
WeakSet 对象还有一些其他的限制:
// 创建一个 WeakSet
const weakSet = new WeakSet();
// 添加值
const obj = { foo: 'bar' };
weakSet.add(obj);
// 判断值是否存在于集合中
console.log(weakSet.has(obj)); // 输出 true.
除了标准的 HashMap 之外,JavaScript 还提供了其他几种类型的 Map 和集合,它们适用于不同的用途和场景。了解这些类型,可以让您更好地选择合适的数据结构来满足您的需求。