MapObject
意外的键Map默认情况不包含任何键,只包含显式插入的键。Object 有一个原型, 原型链上的键名有可能和自己在对象上的设置的键名产生冲突。
键的类型Map的键可以是任意值,包括函数、对象或任意基本类型。键只能是字符串或 Symbols(ES6 引入),对象的属性名会被自动转换为字符串类型。
键的顺序Map 中的 key 是有序的。因此,当迭代的时候, Map 对象以插入的顺序返回键值。对象的属性没有固定的顺序,属性在内部存储时是无序的。
SizeMap 的键值对个数可以轻易地通过size 属性获取,大小和性能通常比对象更加可预测,因为 Map 是专为存储键值对而设计的数据结构。在大多数情况下,对象的属性数量没有明确的限制。
迭代Map 是 iterable 的,所以可以直接被迭代。也提供了一些专门用于遍历和操作的方法,如 Map.prototype.keys(), Map.prototype.values(), Map.prototype.entries() 等。迭代Object需要通过 Object.keys(), Object.values(), Object.entries() 等方法来遍历对象的属性。
性能在频繁增删键值对的场景下表现更好。在频繁添加和删除键值对的场景下未作出优化。

reference