共计 1223 个字符,预计需要花费 4 分钟才能阅读完成。
js 中 Object 和 Map 的区别
Object 是最常用的一种引用类型数据,可用于存储键值对的集合。
Map 是键值对的集合,才会用 Hash 结构存储。(map 是 es6 以后新增的)
共同点: 键值对的动态集合,支持增加和删除键值对
不同点
1. 构造方式
const obj = {
a: 1,
b: 2
}
const o = new Object()
const o2 = Object.create();
const map = new Map()
const m = new Map([
['a', '1'],
['b', '2']
])
2. 键的类型
const obj = {
a: 1,
}
const arr1 = [1, 2]
obj[arr1] = 'arr'
console.log(obj);
const m = new Map()
m.set('a', 1)
m.set('2', '2')
m.set(2, 2)
m.set(arr1, 'arr')
console.log(m);
3. 键的顺序
const obj = {
2: 2,
'1': 1,
'b': 'b',
1.1: 1.1,
0: 0,
'a': 'a',
[Symbol('s1')] : 's2',
[Symbol('s2')] : 's1',
}
console.log(Object.keys(obj));
const m = new Map()
m.set(2, 2)
m.set('1', 1)
m.set('b', 'b')
m.set(0, 0)
m.set('a', 'a')
m.set(Symbol('s1'), 's1');
console.log(m.keys());
4. 键值对 size
const obj = {
2: 2,
'1': 1,
'b': 'b',
}
console.log(Object.keys(obj).length);
const m = new Map()
m.set(2, 2)
m.set('1', 1)
m.set('b', 'b')
m.set(0, 0)
m.set('a', 'a')
m.set(Symbol('s1'), 's1');
console.log(m.size);
5. 键值对的访问
const obj = {
}
obj.name = '张三'
obj.age = 18
obj.name === undefined
delete obj.name
const m = new Map()
m.set('name', '张三')
m.set('age', 18)
m.has('name')
m.get('name')
m.delete('name')
m.keys()
m.clear()
6. 迭代器
7.JSON 序列化
const o = {
name: '张三',
age: 18
}
console.log(o);
console.log(JSON.stringify(o));
const map = new Map([
['name', '张三'],
['age', 19]
])
console.log(map);
console.log(JSON.stringify(Array.from(map)));
8. 应用场景
原文地址: js 中 Object 和 Map 的区别
正文完