Set,Map,WakeSet,WakeMap
简介
Set、Map、WeakMap 和 WeakSet 是 ES6 引入的高级数据结构,它们的底层实现和特性与传统的对象和数组有显著差异
强弱引用了解: link
Set
- Set对象 是一种用于存储 唯一值 的可迭代集合,可存储任意类型的值(原始值、对象引用等)。
- 结构类似于数组
// 空 Set
const set1 = new Set();
// 通过可迭代对象(如数组)初始化
const set2 = new Set([1, 2, 3, 3]); // 结果为 {1, 2, 3}
const set3 = new Set("hello"); // 结果为 {'h', 'e', 'l', 'o'}
Map
- Map 对象是一种用于存储 键值对 的可迭代集合,支持任意类型的键(原始值、对象引用等)。并保留插入顺序
- 结构类似于对象
// 空 Map
const map1 = new Map();
// 通过键值对数组初始化
const map2 = new Map([
["name", "Alice"],
[1, "one"],
[{ id: 1 }, "object key"]
]);
WeakSet
- WeakSet 是一种 不可迭代性 集合类型,专用于存储对象的弱引用
- 若存储的对象 在其他地方被垃圾回收,WeakSet 中的对应引用自动消失。
// 空 WeakSet
const weakSet = new WeakSet();
// 通过对象数组初始化(仅限对象)
const obj1 = { id: 1 }, obj2 = { id: 2 };
const weakSet = new WeakSet([obj1, obj2]);
WeakMap
- WeakMap 是 不可迭代 键值对集合,以弱引用方式存储 对象作为键 的关联数据。
- 当键对象被销毁后,对应的键值对会被自动移除。
// 空 WeakMap
const weakMap = new WeakMap();
// 通过键值对数组初始化(仅限对象键)
const key1 = { id: 1 }, key2 = { id: 2 };
const weakMap = new WeakMap([
[key1, "value1"],
[key2, { data: "value2" }]
]);