ES6中Map类的需求是什么?

时间:2016-08-15 11:58:56

标签: javascript dictionary

ES6标准的一个新功能是Map类,用于创建关键:数据的值集合。好的,对。但是,为什么Javascript需要这样的类?使用JS对象表示法还不够,这实际上也是一个关键:数据的值集合?那么,有什么区别?

1 个答案:

答案 0 :(得分:4)

来自MDN

  

比较对象和地图

     

对象类似于Maps,它们都允许您将键设置为值,检索这些值,删除键以及检测某些键是否存储在键中。正因为如此(并且因为没有内置替代品),所以对象在历史上被用作地图;但是,对象和地图之间存在重要差异,这使得使用地图更好:

     
      
  • 对象有一个原型,因此地图中有默认键。从ES5开始,使用map = Object.create(null)可以绕过这种情况,但很少这样做。
  •   
  • 对象的键是字符串和符号,它们可以是地图的任何值。
  •   
  • 您可以轻松获取地图的大小,同时必须手动跟踪对象的大小。
  •   
     

这并不意味着您应该随处使用地图,在大多数情况下仍会使用对象。地图实例仅对集合有用,您应该考虑调整您以前使用过的对象的代码。对象应用作记录,包括字段和方法。   如果您仍然不确定要使用哪一个,请问自己以下问题:

     
      
  • 在运行之前,密钥通常是未知的,您是否需要动态查找它们?
  •   
  • 是否所有值都具有相同的类型,并且可以互换使用?
  •   
  • 您是否需要不是字符串的键?
  •   
  • 是否经常添加或删除键值对?
  •   
  • 您是否有任意(容易变化)的键值对?
  •   
  • 集合是否已迭代?
  •   
     

这些都是你想要一个集合的地图的迹象。如果相反,你有一个固定数量的键,单独操作它们,并区分它们的用法,那么你想要一个对象。

就我个人而言,最重要的是支持任何类型的值,而不仅仅是字符串。

相关问题