原型
js分為普通對(duì)象和函數(shù)對(duì)象,typeof檢測時(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
- 構(gòu)造函數(shù)的_proto_屬性和構(gòu)造函數(shù)prototype的_proto_屬性是指向不同對(duì)象的墙懂,前者是Function的實(shí)例,因此指向Function.prototype, 后者是普通對(duì)象扮念,若沒有繼承自其它類直接指向Object.prototype损搬。
- Function和Object構(gòu)造函數(shù)的_proto_屬性都是指向Function.prototype,Function的原型的_proto_屬性指向Object.prototype。
總結(jié),構(gòu)造函數(shù)的proto原型鏈上Function.prototype