ES6中Map和Object的区别

JavaScript 的对象(Object)和 Map,本质上是键值对的集合(Hash 结构)

ES6 中 Map 相对于 Object 对象有几个区别:

  • 对象(Object)和只能用字符串和 Symbol 当作键,Map 的 key 可以是任何基本类型或者对象
  • Map 可以通过 size 获取到长度,Object 获取长度的比较复杂
  • Map 具有 Symbol.iterator 属性,可通过 for…of 循环遍历

Map 转为对象:

  • 如果所有 Map 的键都是字符串或者 Symbol,它可以无损地转为对象。
  • 如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名。