Skip to content

Map weakMap

Map

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map

  • 任何值都可以作为键或值
  • 可以记住原始插入顺序
  • 键唯一
  • 键对象强引用

使用场景:需要存储任意类型键值对,且需要对键值对进行遍历和管理的场景。

javascript
const MapData = new Map();

MapData.set('name', 'John');
MapData.set('name', 'Allen');

let obj = { a: 1 }

MapData.set(obj, obj);
MapData.set({ a: 1 }, obj);

obj = null  // map强引用  即使为null 也不会被垃圾回收机制回收
/**Map(3) {
  'name' => 'Allen',
  { a: 1 } => { a: 1 },
  { a: 1 } => { a: 1 }
} */

console.log(MapData)

weakMap

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap

  • 键必须是对象,值任意
  • 键唯一
  • 键对象弱引用(所以不好遍历)
  • 不支持遍历

使用场景:

javascript
const weakMapData = new WeakMap();
let obj2 = { a: 1 }

weakMapData.set(obj2, obj2);
weakMapData.set({ a: 1 }, obj2);
obj2 = null
// obj2  会被垃圾回收机制回收

console.log(weakMapData);

made with ❤️ by ankang