JS中Map和Object的区别

内容分享2周前发布
0 1 0

(JS文档自译)

Object和Map超级类似,两者都可以完成键-值对的设置、获取value、删除key并且根据key获取对应的value。因此,在过去Object常常被当作Map来使用。但是,Object和Map的不同之处会让Map在特定条件下成为一个更佳的选择。

Map Object
附加的Key Map没有默认的key值 Object具有原型对象,所以它包含默认的key值,并且使用不当时会和自定义的key值产生冲突(在ES5中可以通过Object.create(null)来设置去掉默认的key值,但这种解决方法并不常用)
Key的种类 Map的key值可以是任何类型的值,包括函数、Object和任意基础数据类型 Object的key值只能是String或Symbol
Key的顺序 Map中的key值排序简单直接,一个Map对象迭代键值对、Key、Value的顺序和插入时的顺序一样 一般对象的键值是有顺序的,但这并不绝对,有时对象的键值排序会变得很复杂,所以最好不要依赖于插入的顺序。
大小 Map的大小可以轻松通过size属性来获得 Object的大小必须通过自行获取
迭代 Map是可迭代对象,可以轻松完成迭代 Object没有实现迭代协议,所以无法被for…of直接迭代(但可以自行实现迭代协议,或者使用Object.keys()Object.entries()来迭代对象的键值和实体,for…in也可以迭代Object的可枚举属性)
性能 频繁增减键值对时表现会更好 频繁增减键值对时表现较差
© 版权声明

相关文章

1 条评论

您必须登录才能参与评论!
立即登录