首先要知道:
1、所有对象(除null)都有一个__proto__属性指向构造函数的原型对象
2、所有对象(除null)都有一个constructor属性指向构造函数(函数也是对象)
已知:有一个构造函数Fn,并通过Fn new出一个实例fn
即:
function Fn(){}
var fn = new Fn()
然后就能画出如下的原型图
其中红色和蓝色线条分别表示两条原型链(__proto__形成的链式结构)
注:
1、Function的constructor还是指向Function,Function的__proto__属性指向Function的原型(紫色线条)
所以:
Function===Function.constructor (无论多少个constructor都等于Function)
Function.constructor===Function.constructor.constructor
Function.prototype === Function.__proto__
2、写这篇只是当笔记,每次好不容易搞懂,过几个月又忘记了,干脆自己画个图,下次可以回忆得快点。