Map用于保存键值对(并能记忆 键 的原始插入顺序),在JS中任何值都可以作为Map对象中的一个键或值。
Object和Map的相似之处:它们都可以按照键来增删改查一个值。(在Map这一数据类型出现之前,Object充当着Map的作用)
Map 与 Object 的区别:
Map | Object | |
是否包含初始键值 | 不包含 | 包含(继承至原型上的键值) |
键的类型 | 任意值 | 仅限String或Symbol类型 |
键名排列是否有序 | 有序(键被添加时的顺序) | 有序(但排序规则比较复杂) |
键名个数的获取方式 | 通过Map对象自带的size属性 | 没有原生获取键名个数的方式 |
可迭代性 | 支持 | 不支持(未实现迭代协议) |
性能 | 在频繁增删键值对的场景下表现良好 | 未对增、删操作进行优化 |
是否支持序列化与反序列化(JSON) | 不支持 | 支持 |