Object.create()
創建一個新對象,使用現有的對象來提供新創建的對象的__proto__。
語法
Object.create(proto[, propertiesObject])
- 參數
proto
: 新創建對象的原型對象。propertiesObject
: 可選。如果沒有指定爲undefined
,則是要添加到新創建對象的不可枚舉(默認)屬性(即其自身定義的屬性,而不是其原型鏈上的枚舉屬性)對象的屬性描述符以及相應的屬性名稱。這些屬性對應Object.defineProperties()
的第二個參數。
- 返回值
- 一個新對象,帶着指定的原型對象和屬性。
- 例外
- 如果
propertiesObject
參數是null
或非原始包裝對象,則拋出一個TypeError
異常。
- 如果
創建空對象的方法和區別
var obj1 = {};
var obj2 = new Object();
var obj3 = Object.create(null)
console.log(obj1.constructor) // ƒ Object() { [native code] }
console.log(obj2.constructor) // ƒ Object() { [native code] }
console.log(obj3.constructor) // undefined
console.log(obj1.constructor === obj2.constructor) // true
使用Object.create(null)創建的對象是一個乾淨的對象。它指定的繼承原型爲null,它將不會有任何屬性,甚至沒有構造函數。