先看上面的图,网上画的图对于新手来说可能不是很透彻,这时候结合这个例子你去在代码上试试,会发现所有关于原型和原型链的基本意思都概括在这里了。
每个构造函数都有一个原型对象,每个实例又都有一个指针(proto)来指向原型对象,
如果让Two的原型等于One的实例,再让Three的原型等于Two的实例,
这样Three的实例也有了指向One.prototype的指针,当我们在构造函数3的实例中
访问一个属性或者方法时,会先在对象自身进行查找,如果没有则会在Three.prototype
中查找,如果还没有找到就会去原型的原型(Two.prototype)中查找,如果还没有,则会到
One.prototype中查找,就这样,直到找到Object对象的原型为止(Object对象如果没有原型了,会返回null)
总结来说就是:
每个构造函数都会有一个prototype属性,它会指向另外一个对象。这个对象就可以被共享属性和方法。而这个对象的constructor(这个构造器可以在log日志里看到)会指向把它分娩(我暂且这样举例子)的构造函数。