原型链继承: 主要利用sub.prototype=new super,这样连通了子类-子类原型-父类。
缺点:构造函数原型上的属性在所有该构造函数构造的实例上是共享的,即属性没有私有化,原型上属性的改变会作用到所有的实例上。
构造函数继承: 在构造子类构造函数时内部使用call或apply来调用父类的构造函数
优缺点:实现了属性的私有化,但是子类无法访问父类原型上的属性。
组合继承: 利用构造函数和原型链的方法,可以比较完美的实现继承
这里还有个小问题,Sub.prototype = new Super; 会导致Sub.prototype的constructor指向Super;然而constructor的定义是要指向原型属性对应的构造函数的,Sub.prototype是Sub构造函数的原型,所以应该添加一句纠正:Sub.prototype.constructor = Sub;
寄生继承:
即将sub.prototype=new super改为sub.prototype=Object.create(supper.prototype),避免了组合继承中构造函数调用了两次的弊端。