构造函数的原型,原型链
prototype: 每个构造函数里都有一个prototype属性,称为显示原型
__proto__: 每个实例化对象都有一个__proto__属性,称为隐式原型
constructor:每个prototype原型都有一个constructor属性,我们称它为构造函数
原型链:每一个实例对象有一个__proto__属性,指向构造函数的原型对象,构造函的原型对象也是一个对象,也有__proto__属性,这样一层一层往上找,直到找到Object.prototype为止,就形成了原型链,Object.prototype的__proto__值为null。
这里需要注意的是Object是属于原型链的顶层,所有构造函数的的prototype都指向 Object.prototype。
constructor,__proto__,prototype的三角关系
假设有一个构造函数Fn 一个Fn的实例化对象 obj
构造函数Fn的prototype属性指向了构造函数的原型对象Fn.prototype
实例对象obj的__proto__属性指向了构造函数的原型对象Fn.prototype
构造函数的原型对象的constructor属性又指回了构造函数Fn
参考: