JS继承

js继承

实现继承首先要提供一个父类
在这里插入图片描述

一、原型链继承
利用原型让一个引用类型继承另一个引用类型的属性和方法。
在这里插入图片描述
优点:简单易于实现
缺点:无法向父函数传参,函数不能复用
二、借用构造函数
在子类型的构造函数中调用超类型构造函数。
在这里插入图片描述

优点:可以向父函数传参,解决了实例被共享的问题
缺点:无法复用,不能继承原型属性或方法
三、原型式继承
借助原型可以基于已有的对象创建新对象,同时还不必因此创建自定义类型。
在这里插入图片描述

优点:不限制调用方式
缺点:无法实现复用,实例会被共享
四、组合式继承
使用原型链实现对原型的属性和方法的继承,通过借用构造函数来实现对实例属性的继承,既通过在原型上定义方法来实现了函数复用,又保证了每个实例都有自己的属性。
在这里插入图片描述

优点:函数可以复用,可以向超类传递参数
缺点:调用了两次父类
五、寄生式继承
创建一个仅用于封装继承过程的函数, 该函数在内部已某种方式来增强对象,最后再像真地是它做了所有工作一 样返回对象。
在这里插入图片描述
缺点:不能函数复用故效率低下,实例会被共享
六、寄生组合式继承
即通过借用构造函数来继承属性,通过原型链的混成形式来继承方法,通过寄生的方式来修复组合式继承的不足,完美的实现继承
在这里插入图片描述
优点:只调用了一次父函数,效率更高。与其同时,原型链还能保持不变。因此寄生组合继承是引用类型最理性的继承范式。
七、es6继承
代码量少,易懂

//创建A类
class A{
	constructor(){
		//这里构造函数代码,new的时候自动执行
	}
	方法1(//A类的方法)
	方法2(//A类的方法)
}
//创建B类并继承A类
class B extends A{
	constructor(){
		super()//这里表示父类
	}
}
//最后实例化B
var b=new B()
b.方法1()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值