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