原型
js分为普通对象和函数对象,typeof检测时为object或者function
- 每个对象都有_proto_属性
- 只有函数对象才有prototype属性
_proto_和prototype是啥?
- 属性_proto_是一个对象,它有两个属性,constructor和 _proto_;
- 原型对象prototype有一个默认的constructor属性,用于记录实例是由哪个构造函数创建;
原型链
每个对象都会隐式的引用_proto_这个对象,而每个对象的_proto_对象也有_proto_属性,因此层层嵌套,直到Object.prototype.ptoro==null
- 构造函数的_proto_属性和构造函数prototype的_proto_属性是指向不同对象的,前者是Function的实例,因此指向Function.prototype, 后者是普通对象,若没有继承自其它类直接指向Object.prototype。
- Function和Object构造函数的_proto_属性都是指向Function.prototype,Function的原型的_proto_属性指向Object.prototype。
总结,构造函数的proto原型链上Function.prototype