【发布时间】:2016-02-17 00:40:14
【问题描述】:
地图与字典/对象有何不同?
也就是说let x = {}和let x = new Map()有什么区别?
【问题讨论】:
-
"Map 对象是一个简单的键/值映射。任何值(对象和原始值)都可以用作键或值。" -- developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
Mozilla 的那个页面也有一个“对象和地图比较”部分。
-
最大的区别是
Map可以使用任何值作为键(例如另一个对象),而使用{}需要一个字符串作为键。事实上,一个 Map 可以包含带有"1"和1键的单独项目,但普通对象不能。当然,Map 对象具有适用于 Map 对象的内置方法,而{}没有。 -
要记住的另一件事:地图实例也是一个对象,并且可以像任何其他对象一样具有属性等。例如,您可以创建一个 Map 实例并为对象命名函数方法。
-
我不明白对 MDN 的不断引用。 language specification 非常清楚(至少在这一点上),如果作为最终参考,它会带来好处。