聲明:所有代碼均為圖片扒披,養(yǎng)成動手敲的習(xí)慣慎框,切記直接粘貼復(fù)制
簡單來講膜毁,new Object()是一種通過構(gòu)造函數(shù)來創(chuàng)建object的方式疾宏,而Object.create(proto, [ propertiesObject ]) 是E5中提出的一種新的創(chuàng)建一個擁有指定原型和若干個指定屬性的對象的方式赖临。其實(shí)可以理解為繼承一個對象~。
語法:
Object.create(proto, [ propertiesObject ])
參數(shù):
proto
一個對象灾锯,作為新創(chuàng)建對象的原型兢榨。
propertiesObject
可選。該參數(shù)對象是一組屬性與值顺饮,該對象的屬性名稱將是新創(chuàng)建的對象的屬性名稱吵聪,值是屬性描述符(這些屬性描述符的結(jié)構(gòu)與Object.defineProperties()的第二個參數(shù)一樣)。注意:該參數(shù)對象不能是 undefined兼雄,另外只有該對象中自身擁有的可枚舉的屬性才有效吟逝,也就是說該對象的原型鏈上屬性是無效的。
拋出異常
如果 proto 參數(shù)不是 null 或一個對象值赦肋,則拋出一個 TypeError 異常块攒。
例子:
使用Object.create實(shí)現(xiàn)類式繼承
其實(shí)Object.create()內(nèi)部依然是通過new一個構(gòu)造函數(shù)的方式來實(shí)現(xiàn)的,它有構(gòu)造函數(shù)佃乘,不過這個構(gòu)造函數(shù)是隱式存在的囱井,看一下使老舊瀏覽器支持Object.create方法的“polyfill”就可以對它們之間的區(qū)別一目了然了: