继承
继承:父类的属性和方法可以被子类继承,子类可以调用父类的属性和方法
原型和原型链继承:把实例的父类给子函数的原型
缺点:
修改一个对象属性,其他对象的该属性也变了,因为来自原型对象的引用属性里所有实例共享的
创建子类实例时,无法向父类构造函数传递参数
构造函数继承:在子类中调用父类.call(),复制了一份父类的属性或者方法给子类,
优点:
解决了子类实例共享父类引用属性的问题
创建子类实例时,可以向父类构造函数传递参数
缺点:
无法实现复用,每一个子类实例都有一个新的run函数,如果实例对象多了,内存消耗过大
组合继承: 原型链和构造函数组合继承
优点:
不存在引用属性共享的问题
可传递参数
方法可复用
缺点:
子类原型上有一份多余的父类实例的属性
另外还有一些其他继承方式,用的比较少了:原型式继承,寄生式继承