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

标签: 无

评论已关闭