📜  其他模式类型猫鼬的 id - Javascript (1)

📅  最后修改于: 2023-12-03 14:50:06.361000             🧑  作者: Mango

其他模式类型猫鼬的 id - Javascript

在 JavaScript 中,猫鼬是一种对象类型,也被称为 Map。它可以帮助您将键值对存储在一个对象中,并且可以更好地处理简单类型和对象类型。

除了标准的 HashMap 之外,JavaScript 还提供了其他几种类型的 Map,它们适用于不同的用途和场景。

WeakMap

类似于 Map,WeakMap 也可以存储键值对,但有一个重要的区别:键必须是对象,并且是弱引用的。这意味着如果您从内存中删除一个对象,所有与其相关联的键值对都会被自动删除。

WeakMap 对象还有一些其他的限制:

  • 它没有 size 属性,因为它不知道键的数量。
  • 它没有 forEach() 方法,因为它不允许枚举内部元素。
// 创建一个 WeakMap
const weakMap = new WeakMap();

// 添加一个键值对
const obj = { foo: 'bar' };
weakMap.set(obj, 'my value');

// 获取键对应的值
console.log(weakMap.get(obj)); // 输出 "my value".
Set

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

WeakSet 是一种集合类型,与 Set 类似,但它只能存储对象,并且是弱引用的。这意味着如果您从内存中删除一个对象,所有与其相关联的集合值都会被自动删除。

WeakSet 对象还有一些其他的限制:

  • 它没有 size 属性,因为它不知道值的数量。
  • 它没有 forEach() 方法,因为它不允许枚举内部元素。
// 创建一个 WeakSet
const weakSet = new WeakSet();

// 添加值
const obj = { foo: 'bar' };
weakSet.add(obj);

// 判断值是否存在于集合中
console.log(weakSet.has(obj)); // 输出 true.
总结

除了标准的 HashMap 之外,JavaScript 还提供了其他几种类型的 Map 和集合,它们适用于不同的用途和场景。了解这些类型,可以让您更好地选择合适的数据结构来满足您的需求。