小兔网

Map 对象

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

Maps 和 Objects 的区别

  • 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
  • Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
  • Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
  • Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。

2021071304564118384900

Map 中的 key

key 是字符串

var myMap = new Map();var keyString = "a string"; myMap.set(keyString, "和键'a string'关联的值"); myMap.get(keyString); // "和键'a string'关联的值"myMap.get("a string"); // "和键'a string'关联的值" // 因为 keyString === 'a string'

key 是对象

var myMap = new Map();var keyObj = {}, myMap.set(keyObj, "和键 keyObj 关联的值");myMap.get(keyObj); // "和键 keyObj 关联的值"myMap.get({}); // undefined, 因为 keyObj !== {}

key 是函数

var myMap = new Map();var keyFunc = function () {}, // 函数 myMap.set(keyFunc, "和键 keyFunc 关联的值"); myMap.get(keyFunc); // "和键 keyFunc 关联的值"myMap.get(function() {}) // undefined, 因为 keyFunc !== function () {}