JS中Map对象与object的区别
若想了解Map对象可以阅读本人这篇ES6初步了解Map
Map对象与object有什么区别?让我为大家介绍一下吧!
共同点
二者都是以key-value的形式对数据进行存储
const obj = {
name:"zs",
age:18
}
console.log(obj)
let m = new Map()
m.set("name","zs")
m.set("age",18)
console.log(m)
不同点
1.key的数据类型范围不同,obj可以作为key的仅有number、string、symbol,map均可以
const obj = {
name:"zs",
age:18,
[Symbol("11")]:"22"
}
console.log(obj)
let m = new Map()
m.set("name","zs")
m.set("age",18)
m.set(Symbol("11"),22)
m.set([1,2,3],33)
m.set({},33)
console.log(m)
2.key的顺序不同,obj通过obj.keys()打印出来的属性顺序是 number–字符串,map的key顺序是声明顺序。
3.创建方式不同。obj有三种创建方式 字面量{}、new Object() 、构造函数。map仅支持new Map()
obj的创建方式:
const obj = {
name:"zs",
age:18
}
console.log(obj)
// 2.new Object
let obj1 = new Object()
console.log(obj1)
// 3.构造函数
function Person(name,age){
this.name = name
this.age = age
}
let obj2 = new Person("zs",18)
console.log(obj2)
Map对象的创建方式:
let m = new Map()
4. key的调用不同。 map只能用原生的get方法调用。
const obj = {
name:"zs"
}
console.log(obj["name"]) //zs
let m = new Map()
m.set("name","ls")
console.log(m.get("name")) //ls
5.设置属性的方式不同。map只能使用set(key,val)方法设置属性。
const obj = {}
obj["name"] = "zs"
console.log(obj)
let m = new Map()
m.set("name","ls")
console.log(m)
6.Size属性。map有size属性,对象没有。Map.size 返回 Map 中元素的数量,而 Object 的键值对个数只能手动计算
let m = new Map()
m.set("name","ls")
m.set("age",18)
console.log(m.size) //2
感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!