- new Object与平时的{}一样,都将属性添加到自身;Object.create()则是将属性添加到隐式原型proto([[prototype]])上
- Object.create(null) 没有隐式原型;new Object(null)有隐式原型
const obj1 = {
a: 100,
b: 200,
sum() {
return this.a + this.b
}
}
const obj2 = new Object({
a: 100,
b: 200,
sum() {
return this.a + this.b
}
})
const obj21 = new Object(obj1)
console.log(obj1 === obj2) // false
console.log(obj1 === obj21) // true
const obj3 = Object.create(null) // 没有隐式原型__proto__
const obj4 = Object.create({}) // 有隐式原型
const obj5 = Object.create({
a: 100,
b: 200,
sum() {
return this.a + this.b
}
}) // 属性值在隐式原型上
const obj51 = Object.create(obj1)
console.log(obj51 === obj1) // false,一个在__proto__中,一个在自身属性
console.log(obj1)
console.log(obj2)
console.log(obj3)
console.log(obj4)
console.log(obj5)
结果: