一、主要區別
1、{} 和 new Object() 除了本身創建的物件,都繼承了 Object 原型鏈上(Object.prototype)的屬性或者方法,eg:toString();當創建的物件相同時,可以說 {} 等價于 new Object() ,
2、Object.create() 是將創建的物件繼承到原型鏈上,而本身沒有繼承 Object.prototype 的屬性和方法,
二、Object.create的用法
1.Object.create也可以創建一個空物件,但是他的原型如果不指定則沒有
let obj3 = Object.create(null)

2.Object.create如果值是某個物件那么他的原型就是這個物件
let obj1 = { a:10, b:20, sum(){ return this.a + this.b } } let obj5 = Object.create(obj1)

3.這時候obj5不等于obj1,而obj5的原型等于obj1,如果obj1新增屬性,同步obj5的原型也可以獲得

最后總結:
Object.cerate() 必須接收一個物件引數,創建的新物件的原型指向接收的引數物件,
new Object() 創建的新物件的原型指向的是 Object.prototype. (表述有點啰嗦,簡潔點說就是前者繼承指定物件, 后者繼承內置物件Object)
可以通過Object.create(null) 創建一個干凈的物件,也就是沒有原型,
而 new Object() 創建的物件是 Object的實體,原型永遠指向Object.prototype.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/469852.html
標籤:其他
上一篇:函式宣告和函式運算式的區別
