js继承!

继承的含义:

继承是面向对象编程中的一个重要概念,通过继承可以使子类的实例使用在父类中定义的属性和方法。

实现继承首先需要一个父类,在js中实际上是没有类的概念,在es6中class虽然很像类,但实际上只是es5上语法糖而已!

继承方法:

js中实现继承的方法共有七种,分别是:
1)原型链继承
2)构造函数继承
3)组合式继承
4)es6继承

1. 原型链继承

核心:

将父类的实例作为子类的原型

 优点:

  • 易实现,父类新增实例与子类属性都能访问

 缺点:

  • 子类实例时,不能向父类构造函数中传参数

  • 不能多继承

  • 可以在子类中增加实例属性,如果要新增加原型属性和方法需要在new 父类构造函数的后面

 

2. 构造函数继承

用.call()和.apply()将父类构造函数引入子类函数(在子类函数中做了父类函数的自执行(复制))

优点:

  • 子类构造函数向父类构造函数中传递参数

  • 可以实现多继承(call或者apply多个父类)

缺点:

  • 无法复用

  • 不能继承原型属性/方法,只能继承父类的实例属性和方法

 

3.组合继承:

调用父类构造函数,继承父类属性,通过将父类实例作为子类原型,实现函数复用

优点:

  • 函数复用

  • 不存在引用属性问题

  • 可以继承属性和方法,也可以继承原型的属性和方法

缺点:

  • 由于调用了两次父类,所以产生了两份实例

 

 4.es6中class继承:

首先利用class构造一个父类,然后利用extends与super实现子类继承

优点:

  • 代码量少,易懂

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值