原型
js分為普通對(duì)象和函數(shù)對(duì)象,typeof檢測(cè)時(shí)為object或者function
- 每個(gè)對(duì)象都有_proto_屬性
- 只有函數(shù)對(duì)象才有prototype屬性
_proto_和prototype是啥?
- 屬性_proto_是一個(gè)對(duì)象,它有兩個(gè)屬性,constructor和 _proto_;
- 原型對(duì)象prototype有一個(gè)默認(rèn)的constructor屬性,用于記錄實(shí)例是由哪個(gè)構(gòu)造函數(shù)創(chuàng)建;
原型鏈
每個(gè)對(duì)象都會(huì)隱式的引用_proto_這個(gè)對(duì)象,而每個(gè)對(duì)象的_proto_對(duì)象也有_proto_屬性,因此層層嵌套,直到Object.prototype.ptoro==null

原型鏈.png
- 構(gòu)造函數(shù)的_proto_屬性和構(gòu)造函數(shù)prototype的_proto_屬性是指向不同對(duì)象的,前者是Function的實(shí)例,因此指向Function.prototype, 后者是普通對(duì)象,若沒(méi)有繼承自其它類直接指向Object.prototype。
- Function和Object構(gòu)造函數(shù)的_proto_屬性都是指向Function.prototype,Function的原型的_proto_屬性指向Object.prototype。
總結(jié),構(gòu)造函數(shù)的proto原型鏈上Function.prototype