每个实例对象都有一个私有属性(proto)指向它的构造函数的原型对象prototype;该原型对象也有一个自己的原型对象,层层向上直到一个对象的原型对象为null;根据定义,null没有原型,并作为这个原型链中的最后一个环节
1.原型链继承
基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法
核心:原型链对象变成父类实例,子类就可以调用父类方法和属性
优点:实现简单
缺点:引用类型值的原型属性会被所有实例共享;不能向父类传递参数
2.借用构造函数继承
核心:子类构造函数内部调用父类构造函数,并传入this指针
3.组合继承
缺点:在给Child原型赋值会执行一次Parent构造函数,所以,无论什么情况下都会调用2次父类构造函数
4.原型式继承
核心:需要创建一个临时的构造函数,并将作为父类的对象作为构造函数的原型,返回一个新对象