{} new Map Object.create(null) 有何差异呢?

28 阅读1分钟

在学习 散列表的时候,想通过哈希表建立映射关系,那么简单分析一下三种创建对象的差异

三种创建对象差异

字面量方式创建

  1. 优势在于简洁,弊端在于,会继承 Object原型上所有的属性和方法,如不需要,性能可能较差,并且不可迭代,键必须是符合或者字符串。

Object.create(null)

  1. 创建一个纯粹的对象,无继承任何属性和方法。

new Map()

  1. 创建的可以通过 for of 迭代器,并且键可以是任何类型,并且每次插入是保证顺序的,也就是说,我们通过 for of 遍历的顺序就是你之前设置的顺序,但是对象的属性是没有顺序的概念的。即使你按照一定的顺序添加属性,使用 for...inObject.keys() 遍历时,属性的顺序并不总是按照添加顺序。这是因为对象属性的枚举顺序受到ECMAScript规范的影响,通常会先枚举数值索引的属性,然后是字符串索引,最后是符号索引,但并不保证添加的先后顺序