区别:1、map的键可以是任意值,而object的键必须是一个string或是symbol。2、map中的key是有序的,而object的键是无序的。3、map的键值对个数可以轻易地通过size属性获取,而object的键值对个数只能手动计算。4、map可以直接被迭代,而object不可以直接被迭代。5、map在频繁增删键值对的场景下表现更好,而object的效率比较差。
本教程操作环境:windows7系统、ecmascript 6版、dell g3电脑。
map和object的概念object
在ecmascript中,object是一个特殊的对象。它本身是一个顶级对象,同时还是一个构造函数,可以通过它(如:new object())来创建一个对象。我们可以认为javascript中所有的对象都是object的一个实例,对象可以用字面量的方法const obj = {}即可声明
map
map是object的一个子类,可以有序保存任意类型的数据,使用键值对去存储,其中键可以存储任意类型,通过const m = new map();即可得到一个map实例。
map类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,object 结构提供了“字符串—值”的对应,map结构提供了“值—值”的对应,是一种更完善的 hash 结构实现。如果你需要“键值对”的数据结构,map 比 object 更合适。map 可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。
map和object的区别
mapobject
键的类型 一个 map的键可以是任意值,包括函数、对象或任意基本类型。 一个object 的键必须是一个 string 或是symbol。
键的顺序 map 中的 key 是有序的。因此,当迭代的时候,一个 map 对象以插入的顺序返回键值。 一个 object 的键是无序的。注意:自ecmascript 2015规范以来,对象确实保留了字符串和symbol键的创建顺序; 因此,在只有字符串键的对象上进行迭代将按插入顺序产生键。
size map 的键值对个数可以轻易地通过size 属性获取 object 的键值对个数只能手动计算
迭代 map 是 iterable 的,所以可以直接被迭代。 迭代一个object需要以某种方式获取它的键然后才能迭代。
性能 在频繁增删键值对的场景下表现更好。 在频繁添加和删除键值对的场景下未作出优化。
【推荐学习:javascript高级教程】
以上就是es6中map和object的区别是什么的详细内容。