Javascript 6中的字典和映射有什么区别?

Javascript 6中的字典和映射有什么区别?,javascript,ecmascript-6,Javascript,Ecmascript 6,地图与字典/对象有何不同 换句话说,let x={}和let x=newmap()之间的区别是什么?(来自MDN): 对象与贴图类似,都可以将关键点设置为值, 检索这些值,删除键,并检测是否存在错误 储存在钥匙处。因为这个(因为没有内置的 备选方案),对象历史上一直用作地图;然而, 对象和贴图之间有着重要的区别 更好地使用地图: 对象有一个原型,因此地图中有默认关键点。 这可以通过使用map=Object.create(null)绕过,因为ES5, 但是做得很少 对象的键是字符串和符号,它们可

地图与字典/对象有何不同

换句话说,
let x={}
let x=newmap()
之间的区别是什么?

(来自MDN):

对象与贴图类似,都可以将关键点设置为值, 检索这些值,删除键,并检测是否存在错误 储存在钥匙处。因为这个(因为没有内置的 备选方案),对象历史上一直用作地图;然而, 对象和贴图之间有着重要的区别 更好地使用地图:

  • 对象有一个原型,因此地图中有默认关键点。 这可以通过使用map=Object.create(null)绕过,因为ES5, 但是做得很少
  • 对象的键是字符串和符号,它们可以是 地图的任何值
  • 你可以很容易地得到地图的大小,而你必须手动 跟踪对象的大小
这并不意味着您应该在任何地方使用贴图,对象仍然是 在大多数情况下使用。映射实例仅对集合有用,并且 您应该考虑在以前使用的代码中修改代码。 这类活动的对象。对象应作为记录使用,带有字段和 方法。如果你仍然不确定该用哪一个,问问自己 以下问题:

  • 密钥在运行时之前通常是未知的,您需要动态地查找它们吗
  • 所有值是否具有相同的类型,并且可以互换使用
  • 你需要不是字符串的键吗
  • 是否经常添加或删除键值对
  • 您是否有任意数量(易于更改)的键值对
  • 集合是否迭代
这些都是你想要收藏地图的标志。如果在 相比之下,如果你有固定数量的钥匙,操作它们 单独使用,并区分它们的用法,然后您需要 反对


“Map对象是一个简单的键/值映射。任何值(对象和原语值)都可以用作键或值。”--Mozilla的页面还有一个部分“对象和映射比较”。最大的区别是
映射可以使用任何值作为键(例如另一个对象),其中使用
{
需要字符串作为键。事实上,地图可以包含键为
“1”
1
的单独项目,但普通对象不能。当然,Map对象有内置的方法,可以应用于
{}
没有的Map对象。另一件事要记住:Map实例也是一个对象,可以像任何其他对象一样具有属性等。您可以创建一个映射实例,并给出名为function methods的对象,例如。我不理解MDN的常量引用。这是非常清楚的(至少在这一点上),如果是明确的参考,它会带来好处。另一件可能非常重要的事情是,
JSON.stringify()忽略了地图内容。
请确保将您对我的MDN文本的引用格式化为quote:-)