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:-)