原型:
每一个构造函数都有一个 prototype 属性,这个属性会在生成实例的时候,成为实例对象的原型对象。javascript 的每个对象都继承另一个对象,后者称为“原型”(prototype)对象。
原型链:
每一个对象都有一个 proto 属性,对象的属性和方法,有可能定义在自身,也有可能定义在它的原型对象。由于原型本身也是对象,又有自己的原型,所以形成了一条原型链。
继承:
继承就是在子类构造函数中继承父类构造函数的私有属性和原型属性。我们在子类构造函数中使用 call 或 apply 方法调用父类构造函数并改变其 this 指向为子类构造函数的 this,此时子类的构造函数就继承了父类的私有属性和私有方法。