JavaScript中的继承
JavaScript中的继承主要使用原型链实现
1.原型继承
1 | var SuperType = function () { |
优点:实现了继承
缺点:实例之间的属性共享问题
2.借用构造函数
1 | var Person = function (name) { |
优点:实例之间的属性可以独立
缺点:实例之间的方法无法复用
3.组合继承
1 | var Person = function (name) { |
优点:不同的实例拥有各自的属性和相同的方法
缺点:调用两次构造函数
4.原型式继承
这是一种借助已有对象来进行继承的方式
1 | function object (o) { |
ECMAScript 5 新增 Object.create() 规范化原型式继承
优点:使用方便
缺点:使用属性的值会共享
5.寄生式继承
寄生式继承和寄生构造函数一样,都是在函数的内部对实例进行增强
1 | var createAnother = function (original) { |
6.寄生组合继承
组合继承存在调用两次父类的构造函数问题这会时父类的原型上创建出多余的属性 解决的方案是 我们只需要父类原型一个拷贝 没有必要调用父类的构造方法
1 | function inheritPrototype(subType, superType){ |
优点: 完美了