1、同名碰撞
对象其实就是在堆开辟了一块内存,其实 Map 的键存的就是这块内存的地址。只要地址不一样,就是两个不同的键,这就解决了同名属性的碰撞问题,而传统的 Object 显然做不到这一点。
2、键的类型
- Map 的键可以是任意值,包括函数、对象或任意基本类型。
- Object 的键必须是 String 或是Symbol。
3、键的顺序
- Map 中的 key 是有序的。因此,当迭代的时候, Map 对象以插入的顺序返回键值。
- Object 的键是无序的
4、Size
- Map 的键值对个数可以轻易地通过 size 属性获取
- Object 的键值对个数只能手动计算
5、迭代
- Map 是 iterable 的,所以可以直接被迭代,可用 for...of 遍历
- Object 不是 iterable,不可以被迭代,不能用 for...of 遍历