js中每個(gè)函數(shù)(用function定義的對(duì)象)都有constructor屬性玖瘸。用new定義的對(duì)象和對(duì)象直接量({}形式的對(duì)象)沒有constructor屬性川慌。該constructor指向?qū)ο蟮臉?gòu)造函數(shù)短条,有prototype屬性,prototype屬性指向一個(gè)prototype對(duì)象:
prototype和constructor相互引用
函數(shù)的constructor是 function Function()卤档,而其他方式定義的對(duì)象的constructor(如果有的話)是function Object()
在使用new創(chuàng)建對(duì)象時(shí)會(huì)為該對(duì)象生成一個(gè)內(nèi)置原型對(duì)象砸琅,他指向定義該對(duì)象的function的prototype對(duì)象,因此新創(chuàng)建的對(duì)象擁有其構(gòu)造函數(shù)(或類)的prototype的方法。
想定義一個(gè)繼承自某個(gè)對(duì)象的對(duì)象埃元,只需要把子類的prototype設(shè)置為父類的一個(gè)(實(shí)例化)對(duì)象涝涤。