一、原型链继承
    缺点: 1、引用值共享
    2、无法给父类构造函数传参
    二、借用构造函数
    作用:实现向父类构造函数自定义传参
    缺点:无法继承父类原型的属性与方法
    三、组合继承
    作用:前两者结合,解决了无法向父类构造函数自定义传参和值共享的问题
    缺点:调用两次父类构造函数,还可以提升性能
    四、原型式继承
    使用Object.create方法,直接实现对象之间的继承
    五、寄生式继承
    调用Object.create创造新对象,再给其增加属性与方法
    六、寄生组合式继承
    在组合继承的基础上,用Object.create创造一个继承于父类原型的对象,避免了重复调用的问题。
    七、es6中的extends
    是一种语法糖,采用继承组合式方式。