new Object() 和 Object.create()的区别

305 阅读1分钟

前提:要先明白原型和原型链 JS基础知识:原型和原型链

  • {} 等同于 new Object(), 原型 Object.prototype
  • Object.create(null) 没有原型, 必须传个参数
  • Object.create({…}) 可指定原型

Object.create({…}) : 创建一个空对象,把原型__proto__ 指向传入的对象 代码示例:

    a: 10,
    b: 20,
    sum() {
        return this.a + this.b
    }
}

const obj2 = new Object({
    a: 10,
    b: 20,
    sum() {
        return this.a + this.b
    }
})

const obj21 = new Object(obj1) // obj21 === obj1

const obj3 = Object.create(null)
const obj4 = new Object() // {}

const obj5 = Object.create({
    a: 10,
    b: 20,
    sum() {
        return this.a + this.b
    }
})

const obj6 = Object.create(obj1)  // obj6.__proto__ === obj1