Skip to content

Map

函数、对象、基本类型都可以作为键或值

声明定义

可以接受一个数组作为参数,该数组的成员是一个表示键值对的数组。

javascript
let m = new Map([
  ['k1', 'v1'],
  ['k2', 'v2']
]);
console.log(m)// {'houdunren' => '后盾人', 'hdcms' => '开源系统'}

使用set 方法添加元素,支持链式操作

对于键是对象的Map, 键保存的是内存地址,值相同但内存地址不同的视为两个键。

WeakMap

WeakMap 对象是一组键/值对的集

  • 键名必须是对象
  • WeaMap对键名是弱引用的,键值是正常引用
  • 垃圾回收不考虑WeaMap的键名,不会改变引用计数器,键在其他地方不被引用时即删除
  • 因为WeakMap 是弱引用,由于其他地方操作成员可能会不存在,所以不可以进行forEach( )遍历等操作
  • 也是因为弱引用,WeaMap 结构没有keys( ),values( ),entries( )等方法和 size 属性
  • 当键的外部引用删除时,希望自动删除数据时使用 WeakMap