JS中构造函数具有的一个属性为原型 prototype,prototype 本身是一个对象,故称为原型对象;一般原型对象中存储定义可以共享的方法函数。
构造函数可以通过 new 方法创建实例对象,其中所创建的实例对象内部的原型 __proto__ 指向构造函数的原型对象,也就是 prototype 。这一指向使得所有被创建的实例对象都可以共享原型对象中所定义的方法(例子中共享方法为do())。
prototype 与 __proto__ 关系图如下
与关系图对应的例子代码如下
注:原型对象与对象的原型可以理解为是等同的(代码最后一行)