javascript继承总结

1、 原型链继承

通过修改子类的prototype指向父类的实例,子类所产生的实例所在原型链包含父类,所有实例都共享父类的实例,继承方式比较单一

2、 借用构造函数继承

通过在子类构造函数中引入并通过call或apply修改父类的this指向,使得父类构造函数中this所指向的属性在子类构造函数中生成,可同时继承多个父类,但只能继承构造函数中的属性

3、 组合继承

结合构造函数继承和原型链继承的优点和特性,在子类构造函数中引入父类属性,同时又在修改子类的prototype属性指向父类的实例,使得子类获得原型上的继承,但是该过程调用了两次父类构造函数,比较消耗内存

4、 原型式继承

通过先封装函数作为容器,将子类构造函数的声明以及修改prototype指向函数参数写在容器里,再return 执行子类函数对象。使用时候通过对函数容器传入想要继承的父类实例,得到的结果则是完成继承的函数对象

5、 寄生式继承

在原型式继承的基础上,对原型式使用过程再进行封装,使得执行原型式继承的函数容器得到的函数对象,进行其他的属性添加操作,再返回出来,也就是在原型是继承后面再进行一次加工

6、 寄生组合式继承(常用)

通过利用寄生式继承直接继承父类的原型,再通过组合继承,先子类构造函数继承继承父类构造函数属性,再修改子类prototype指向寄生式继承产生的实例,再修改寄生式继承产生的实例的constructor指向子类。也就是通过寄生式先继承原型,避免组合式继承重复调用父类构造函数

 

参考链接:https://www.cnblogs.com/ranyonsue/p/11201730.html

posted @ 2021-02-24 11:58  浪波激泥  阅读(55)  评论(0编辑  收藏  举报