原型继承

1.借用构造函数:只能继承父类的实例属性,但是可以给父类传递参数,在子类的构造函数中使用SuperType.call(this),将父类的构造函数的this指向改变,这样将父类中的属性变成了子类中的

2.组合继承:利用原型来实现原型属性的继承(即将实例的prototype的属性指向父类创建的实例),利用构造函数call方法来实现将实例属性的继承。但是问题是可能会遇到原型属性和实例属性相同的情况。

3.原型式继承:函数内部创建一个构造函数,并可以通过传入函数的参数,来实现构造函数原型的指向,最后返回构造函数实例,(Object.create(),但是所有的创建出来的对象都指向同一个原型,在给原型中的属性添加信息的时候,都会添加到同一个原型对象中。

4.寄生式继承:创建一个函数,在函数内部,使用原型继承返回的实例,给返回的实例添加一些实例属性。感觉上和原型继承差不多,只是将对实例属性的设置添加到了函数内部

5.寄生组合式继承:主要是为了解决二次调用父类的构造函数,直接将子类的原型指向父类的原型,改变一下原型的构造函数名,这样可以直接利用子类来创建实例实现父类原型的继承,然后利用call来实现父类的实例属性的继承,这样也就可以减少实力属性的重复继承。

原文地址:https://www.cnblogs.com/panjingshuang/p/11614808.html