Jay*_*Jay 3 javascript ecmascript-6
Map如何与字典/对象不同?
换句话说,let x = {}和之间有什么区别let x = new Map()?
比较对象和地图(来自MDN):
对象类似于Maps,它们都允许您将键设置为值,检索这些值,删除键以及检测某些键是否存储在键中.正因为如此(并且因为没有内置替代品),所以对象在历史上被用作地图; 但是,对象和地图之间存在重要差异,这使得使用地图更好:
- Object有一个原型,因此地图中有默认键.这可以通过使用自ES5以来的map = Object.create(null)来绕过,但很少完成.
- Object的键是字符串和符号,它们可以是Map的任何值.
- 您必须手动跟踪对象的大小,才能轻松获得Map的大小.
这并不意味着你应该到处使用地图,在大多数情况下仍然使用对象.地图实例仅对集合有用,您应该考虑调整您以前使用过的对象的代码.对象应用作记录,包括字段和方法.如果您仍然不确定使用哪一个,请问自己以下问题:
- 密钥在运行时通常是未知的,您是否需要动态查找它们?
- 所有值都具有相同的类型,可以互换使用吗?
- 你需要不是字符串的键吗?
- 是否经常添加或删除键值对?
- 您是否有任意(容易变化)的键值对?
- 该集合是否重复?
这些都是你想要一个集合的地图的迹象.如果相反,你有一定数量的键,单独操作它们,并区分它们的用法,那么你想要一个对象.
| 归档时间: |
|
| 查看次数: |
2582 次 |
| 最近记录: |