首页 » 文章 » 文档 » js 常见问题 » new Object() 和 Object.create 的区别

new Object() 和 Object.create 的区别

  • {} 等同于 new Object(),原型都是 Object.prototype
  • Object.create(null) 没有原型
  • Object.create({…}) 可指定原型
const obj1 = {
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 obj3 = new Object(obj1)
console.log(obj1===obj2) // false
console.log(obj1===obj3) // true

const obj4 = Object.create(null) // {} 没有原型
const obj5 = new Object() // {} 有原型

// obj6 的 __proto__ 原型就是
// {
// a: 10,
// b: 20,
// sum() {
// return this.a + this.b
// }
// }

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

// obj7 的 __proto__ 原型就是 obj1
const obj7 = Object.create(obj1)
console.log(obj7.__proto__ === obj1) // true
console.log(obj7 === obj1) // false

»js 常见问题

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll to Top