【js基础】Map 和 Object 的区别

在JavaScript中,Map 和 Object 看起来都是用键值对来存储数据,那么他们有什么不同呢?

不同点

Key filed

在 Object 中, key 必须是简单数据类型(整数,字符串或者是 symbol),而在 Map 中则可以是 JavaScript 支持的所有数据类型,也就是说可以用一个 Object 来当做一个Map元素的 key

元素顺序

Map 元素的顺序遵循插入的顺序,而 Object 的则没有这一特性。

继承

Map 继承自 Object 对象。

新建实例

Object 支持以下几种方法来创建新的实例:

var obj = {...};

var obj = new Object();

var obj = Object.create(null);

Map 仅支持下面这一种构建方法:

var map = new Map([1, 2], [2, 3]);      // map = {1 => 2, 2 => 3}

数据访问

Map 想要访问元素,可以使用 Map 本身的原生方法:

map.get(1) // 2

Object 可以通过 . 和 [ ] 来访问

obj.id;  

obj['id'];

判断某个元素是否在 Map 中可以使用

map.has(1);

以及增删改查、迭代等

递归时的栈溢出问题

object会出现复杂递归的栈溢出问题。map不会

你可能感兴趣的:(【js基础】Map 和 Object 的区别)