js原型与原型链
彻底理解原型与原型链,搭配 核心示例图理解
前提条件
- 只要是对象,就会存在
__proto__ - 只要是函数,就会有
prototype 

核心示例图

开始操作
- 以
Person构造函数为例开始 - 通过
new Person()获得到person对象 - 对象就存在
__proto__,指向的就是Person.prototype 
- 同时我们发现,
p.__proto__和Person.prototype不但相等,还是一个对象{} - 既然是对象,就又会存在
__proto__,但此时,这个对象指向的就是Object.prototype了 
- 然后
Object.prototype和Object的关系,和Person是类似的,可以看图理解,这里就不再重复了 - 然后打印
Object.prototype发现,还是一个对象,那么就还有__proto__, 只不过此时,获得到的是null,这就是平常说的,js在寻找属性的时候,会一直向上找,直到找到null 
- 此时,object类型的解释完毕
另一条线 Function
- 回到
Person和Object构造函数 - 函数是如何创建的,一定是通过
Function获得到的,他们都是Function的实例 - 实例的
__pro__指向 构造的prototype 
- 然后
Function和Function.prototype的关系还是和上面类似,不多解释了 - 但是
Function.prototype又是一个对象,所以他的__proto__又会指向到Object.protytype - 至此
Function和Object的关系闭环 
- Over~