在Javascript中使用Map over Object有什么缺点吗?

Ant*_*ony 7 javascript dictionary hashtable

使用Object over ES6有什么明显的好处Map()吗?我喜欢用它来实现这个forEach功能.Map()在需要哈希表时选择是不好的做法?

小智 5

Javascript 上下文中的Objectvs的情况更多的是一个问题,即您是否需要通用工具或专用工具来完成这项工作。Map

Map实际上只是一种特殊类型的对象(就像您在应用程序中构造的任何其他类型的对象一样。您甚至可以创建自己的Map()构造函数来模仿 ES6 Maps)。与其他对象一样,它具有访问其功能的方法。它的“特色”Map是成为一个高效的键值存储。

另一方面,它Object是 Javascript 的原生数据类型之一,可用于多种用途(Map就是其中之一)。它不“专门”用于任何一种目的。

所以,总而言之:

  • 如果您使用 aMap作为高效的哈希表,那就用它吧!这就是它的目的。
  • 如果您用于Map键值存储以外的任何其他用途(或者,正如您所说,只是因为该forEach方法),您可能必须重新考虑使用它,以支持更合适的数据结构(可能是也可能不是普通的旧数据结构)目的)

  • ...反之亦然 - 如果您使用对象作为哈希表,请停止这样做! (2认同)