识别原型链关键:跟着__proto__走
画出原型链关键:理解A,A.prototype与B.__proto__
网上的原型链图有很多种,作为新手看着看着就迷糊了。看不懂的其中一个原因是他们一步到位,从老老老父亲到刚new的对象都放在一张图上。
一、I级原型
因此想要理解,首先从最上层的Object开始捋一下:
如图,Object是js提供的引用类型。它是function对象,也是其child的构造函数。 Object的prototype属性上存放着要给其child的诸多方法。
二、II级原型
声明一个函数A
function A(){
this.name='test'
}
console.log(A.prototype)
console.log({}.toString.call(A)) //[Object Function]
通过打印可以看出函数A是js对象类型中的function对象类型。实际上继承自Object。因此可以画出下图的II级继承关系
如图A.prototype的__proto__属性指向Object的prototype属性,此处已经是一条原型链。
三、III级原型链
用new操作符实现一个A的子对象。对照new操作符的实现过程,画出下图: