原型:每一个构造函数都有一个prototype属性,这个属性会在生成实例的时候,成为实例对象的原型对象,js的每一个对象都继承另一个对象,后者成为“原型对象”。
原型链:每一个对象都有一个proto属性,对象的属性和方法,有可能定义在自身,也有可能定义在他的原型对象,由于原型本身也是对象,又有自己的原型,所以形成一条原型链。(原型链的作用:读取对象的某个属性时,js引擎先寻找对象本身的属性如果找不到,就到他的原型去找,还找不到就去原型的原型去找,直到最顶层的object.prototype ,还是找不到就返回null。)
继承:就是子构造函数继承父类构造函数的私有属性和原型属性。 在子类构造函数中使用call和apply方法调用父类函数并改变其this指向为子类函数的this。这样子函数就继承了父类函数的私有属性和私有方法,将父类函数的实例对象赋值给子函数的原型对象 ,此时子函数就继承了父类的原型属性和原型方法