Map 对象保存键值对。任何值(对象或者原始值) 均可以做为一个键或一个值。prototype
new Map([iterable])对象
Object和 Map相似的一点是,它们都容许你按键存取一个值,均可以删除键,还能够检测一个键是否绑定了值.所以,一直以来,咱们都把对象当成Map来使用,不过,如今有了Map,下面的区别解释了为何使用Map更好点.字符串
纠错
一个对象一般都有本身的原型,因此一个对象总有一个"prototype"键。
不过,从 ES5 开始可使用 map = Object.create(null)来建立一个没有原型的对象。
一个对象的键只能是字符串或者 Symbols,但一个 Map 的键能够是任意值。原型
你能够经过size属性很容易地获得一个Map的键值对个数,而对象的键值对个数只能手动确认。
可是这并不意味着你能够随意使用 Map,对象仍旧是最经常使用的。it
在运行以前 key 是不是未知的,是否须要动态地查询 key 呢?
是否全部的值都是统一类型,这些值能够互换么?
是否须要不是字符串类型的 key ?
键值对常常增长或者删除么?
是否有任意个且很是容易改变的键值对?
这个集合能够遍历么?
假如以上全是“是”的话,那么你须要用 Map 来保存这个集。 相反,你有固定数目的键值对,独立操做它们,区分它们的用法,那么你须要的是对象。object