如何去比较 Object 和 Map?
Javascript 277
Object 与Maps 的相似之处在于,它们都允许您将键设置为值、检索这些值、删除键以及检测某个键是否存储了某些内容。由于这个原因,对象在历史上被用作地图。但是在某些情况下,使用 Map 有一些重要的区别。
- Object 的键是字符串和符号,而它们可以是 Map 的任何值,包括functions、Object 和任何primitive。
- Map 中的键是有序的,而添加到 Object 的键不是。因此,当迭代它时,一个 Map 对象按插入的顺序返回键。
- 您可以使用 size 属性轻松获取 Map 的大小,而 Object 中的属性数量必须手动确定。
- Map 是可迭代的,因此可以直接迭代,而迭代 Object 需要以某种方式获取其键并对其进行迭代。
- 一个对象有一个原型,所以如果你不小心,地图中有一些默认的键可能会与你的键发生冲突。从 ES5 开始,这可以通过使用
map =Object.create(null)
绕过,但很少这样做。 - Map在涉及频繁添加和删除密钥对的场景中可能表现得更好。