JavaScript面向对象的继承

大家好!今天来讲讲js中面向对象的继承,首先要明白继承:就是让一个没有某个属性或方法的对象能够使用另一个对象所具有的某个属性或方法。
先举一个简单的例子:
在这里插入图片描述
以上是一个简单的实例与实例之间的继承,规模较小。
继承主要是构造函数和构造函数之间的继承,共分为四种:1. 原型的继承; 2.构造函数的继承; 3.混合继承(组合); 4. ES6 class 继承。接下来具体介绍:

1 原型的继承分为两种,一种是原型对象继承,另一种是原型链的继承。
1-1原型对象的继承
优点: 简单,方便,易操作
缺点:只能继承原型身上的方法和属性,不能继承构造函数内的方法和属性
在这里插入图片描述
1-2原型链的继承
优点:更加的简单,方便,易操作
不仅可以继承原型身上的方法和属性,而且还可以继承构造函数中的方法和属性
缺点:不方便传参
在这里插入图片描述
此原型链的继承原理:
Child的实例c —> proto —> Child.prototype —> Parent的实例 —> proto —> Parent.prototype

2.构造函数继承(改变this指向继承):
优点:方便的传参
还可以实现多继承
缺点:只能继承构造函数内部的属性或方法,不能继承原型身上的属性或方法
在这里插入图片描述
改变this的指向,可以使用三种方法。例:abc.call( );abc.bind( );abc.apply( )
构造函数的继承,还可以扩展为多继承,如下:
在这里插入图片描述
3 混合继承:构造函数继承 + 原型继承
优点: 既可以继承构造函数,又可以继承原型; 方便传参; 可以多继承构造函数
注意:原型链继承时,依然有参数隐患
混合继承是常用的继承方式之一。如下:
在这里插入图片描述
4 ES6的class继承,原理就是:构造函数方式继承 + 原型链继承。
在这里插入图片描述
以上就是js中面向对象的继承。文中如果纰漏,错误,不合理,描述不清晰,不准确等问题,欢迎大家批评指正…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值