你啥时候会在对象上使用 ES6 映射? [复制]

Posted

技术标签:

【中文标题】你啥时候会在对象上使用 ES6 映射? [复制]【英文标题】:When would you use an ES6 Map over an Object? [duplicate]你什么时候会在对象上使用 ES6 映射? [复制] 【发布时间】:2015-11-07 10:46:17 【问题描述】:

我一直在查看 MDN 上的新 ES6 文档,但我找不到 Map 对象的实际用途,而普通对象无法正常工作。有没有人有任何地图的用例并解释为什么一个对象在这种情况下不起作用?

【问题讨论】:

嗯:map.set(aDOMElement, someData). 我还没有考虑过在 Dom 元素中附加一些数据。这将非常有用。谢谢@FelixKling 【参考方案1】:

MDN lists a number of important differences:

Object 有一个原型,因此映射中有默认键。 [编辑:好老hasOwnProperty问题] Object 的键是 Strings它们可以是 Map 的任何值。 您可以轻松获取Map 的大小,而您必须手动跟踪Object 的大小。 Map按插入顺序迭代其元素,而 Objects 未指定迭代顺序。

所以Map 最终是一个插入排序的 javascript 键值存储,它还允许将任何值映射到任何值,而不是将键限制为字符串。这可以极大地简化一些需要排序的代码,或者对象或其他复杂数据类型需要与其他数据相关联的代码。

【讨论】:

以上是关于你啥时候会在对象上使用 ES6 映射? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

你啥时候把 Javascript 放在 body 里,啥时候放在 head 里,啥时候使用 doc.load? [复制]

PHP面向对象之标识映射

使用自动映射器映射对象列表

React/Redux - 你啥时候应该从 API 获取新数据来更新你的商店?

如何使用对象映射器从响应 JSON 映射子数组?

你啥时候以及为啥要封课?