// new Object() 和 Object.create() 区别
// 直接定义一个对象let obj = {a:1} 等于 let obj = new Object({a:1}),他们的原型都是Object.prototype
// let obj1 = Object.create(obj): 该方法会创建一个空对象,该空对象的隐式原型指向传入的对象 obj1.__proto__ === obj
// 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
}
})
// console.log(obj1 === obj2); // false
// const obj2 = new Object(obj1) // obj1 === obj2
const obj3 = Object.create(null) // 创建一个空对象 传入null代表没有原型
const obj4 = new Object() // {} -> let obj4 = {}
const obj5 = Object.create({
a: 10,
b: 20,
sum() {
return this.a + this.b
}
})
const obj6 = Object.create(obj1) // obj6.__proto__ === obj1