ES6 - Map 与 Object 的区别
ES6中Map
相对于Object
对象有几个区别:
-
Object的键只能是字符串或者Symbol,Map的键值可以是任意值
-
Map的键值对数量可以通过size属性获取,
Object
则需要通过Object.keys(obj).length
类似的方式获取 -
Object
有自己的原型,原型链上的键名可能与对象的键名产生冲突。除非我们使用Object.create(null)
创建一个没有原型的对象; -
Map
的键值是有序的,数据的排序是根据用户push的顺序进行排序的, 而Object
实例中key
,value
的顺序就是有些规律了, (他们会先排数字开头的key
值,然后才是字符串开头的key
值);
比如:
{
'1': 'a',
'3': 'c',
'2': 'b'
}
会自动调整
{
'1':'a',
'2':'b',
'3':'c'
}
可以遍历一遍打印 , 很容易看到结果, 而map不会,原来定义是什么顺序就是什么顺序
new Map([
['1','a'],
['3','c'],
['2','b'],
])
转载自:https://juejin.cn/post/7087179786967056392