Object和Map区别

161 阅读1分钟

相同点

  1. 都以key-value形式对数据进行存储

区别

1.key数据类型范围不同

Object:作key有number、string、symbpl;

Map:js目前所有类型;

2.key的顺序

Object:同时有三种类型:number =》string =》symbol; Map:以声明顺序;

3.创建方式

// Object
const obj1 = new Object();
const obj2 = {};
const obj3 = create();
// Map
const map = new Map();

4.key的调用方式

通过key取值:

Object:可通过 . 或 [];

Map:只能用原生的get方法进行调用;

判断是否有某个属性:

Object:'a' in obj,判断obj中是否有a这个属性;;

Map:map.has('a'),判断map中是否有a这个属性;

5.设置属性

// Object: 
obj.a = 1;
obj['a'] = 1;
// Map:js目前存在的数据类型均可以作为key;
map.set('a',1);

6.删除key的方式

// Object: 一般删除对象属性的方式:
delete obj.a
// Map: 删除a属性
map.delete('a');
// 删除所有的属性;
map.clear();

7.获取size

// Object::通过Object.keys(obj) 返回一个数组,通过获取数组的长度来获取size;
Object.keys(obj);
// Map:自身带有size属性,size属性无法修改;
map.size;

8.JSON操作

Object:支持 JSON.stringify 和 JSON.parse 的操作;

Map:不支持;

9.this指向不同

const f = function(){ console.log(this) }
// Object: 
const obj = {fn:f}
// Map: 
const map = new Map()
map.set('fn',f)
		
obj.fn() // 指向obj
map.get('fn')() // 取决于函数的调用者;