0


ES6——class类实现继承

赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。
面试专栏分享,感觉有用的小伙伴可以点个订阅,不定时更新相关面试题:面试专栏 。

🍘正文

1.实现类的继承

在ES6 中新增了

  1. extends

关键字,用于实现类的继承。

MDN中对

  1. extends

关键字的解释是这么说的:

定义:**

  1. extends

**关键字用于类声明或者类表达式中,以创建一个类,该类是另一个类的子类。

语法:

  1. class ChildClass extends ParentClass {... }

描述:

  1. extends

关键字用来创建一个普通类或者内建对象的子类。

接下里展示一段示例代码展示一下ES6中

  1. extends

关键字实现的继承:

  1. // 父类名字ParentclassParent{constructor(name, age){this.name = name
  2. this.age = age
  3. }running(){
  4. console.log(this.name +' 在跑步~')}}// 使用关键字创建子类Son继承父类classSonextendsParent{}constP1=newSon('Jee',20)
  5. console.log(P1)// Son { name: 'Jee', age: 20 }P1.running()// Jee 在跑步~

只需要一个extends 关键字即可轻松实现继承父类中的constructor属性

2. Super关键字

注意:在子类(派生类)的构造函数中使用this或者返回默认对象之前,必须先通过super调用父类的构造函数!

super的使用位置有三个:

  1. 子类的构造函数
  2. 实例方法
  3. 静态方法

2.1:Super关键字使用方法一:

在子类(派生类)的构造函数中使用this或者返回默认对象之前,必须先通过super调用父类的构造函数,否则会报错。

比如:Son类中constructor属性中没有去掉super方法就会报错。

如下展示正确的使用方法一:

  1. // 父类名字ParentclassParent{constructor(name, age){this.name = name
  2. this.age = age
  3. }running(){
  4. console.log(this.name +' 在跑步~')}}classSonextendsParent{constructor(name, age, height){super()this.name = name
  5. this.age = age
  6. this.height = height
  7. }}constP1=newSon('Jee',20,'1.80')
  8. console.log(P1)// Son { name: 'Jee', age: 20, height: '1.80' }

上面示例代码中子类中有两句重复的逻辑语句,在父类中我们已经声明过了,在子类中再写一次就冗余了,让我们接下来看看有没有什么好的解决办法。

2.2:Super关键字使用方法二:

  1. classSonextendsParent{constructor(name, age, height){super(name,age)// this.name = name// this.age = agethis.height = height
  2. }}

这就是上面的代码冗余的问题解决办法:可以将name和age写到super参数中就可以直接继承父类的逻辑,减少冗余代码。

3.重写父类方法

子类继承父类之后,子类中也可以直接调用父类的方法(最上方示例代码中有涉及这里就不再做展示了)。

但是在很多情况下,父类中的方法是达不到子类的要求的,那么子类就可以有一下两个操作:

3.1:重写父类方法

  1. classParent{constructor(name, age){this.name = name
  2. this.age = age
  3. }running(){
  4. console.log(this.name +' 在跑步~')}}classSonextendsParent{constructor(name, age, height){super(name, age)this.height = height
  5. }// 重写父类方法running(){
  6. console.log('我看见'+this.name +'在跑步~')}}constP1=newSon('Jee',20,'1.80')
  7. console.log(P1)P1.running()

3.2:新增方法,并在新增方法中调用父类方法内容

  1. classParent{constructor(name, age){this.name = name
  2. this.age = age
  3. }parentMethod(){
  4. console.log('处理逻辑一')
  5. console.log('处理逻辑二')
  6. console.log('处理逻辑三')}}classSonextendsParent{constructor(name, age, height){super(name, age)this.height = height
  7. }sonMethod(){// 调用父类的方法供子类使用super.running()
  8. console.log('处理逻辑四')
  9. console.log('处理逻辑五')
  10. console.log('处理逻辑六')}}constP1=newSon('Jee',20,'1.80')
  11. console.log(P1)// Son { name: 'Jee', age: 20, height: '1.80' }P1.sonMethod()// 处理逻辑一//处理逻辑二//处理逻辑三//处理逻辑四//处理逻辑五//处理逻辑六//我看见Jee在跑步~

🎃专栏分享:

  1. JavaScript相关面试题就更新到这里啦,相关 Web前端面试题 可以订阅专栏哦

🥰
专栏地址:《面试必看》


  1. 名言警句:说能做的做说过的
  2. \textcolor{red} {名言警句:说能做的做说过的}
  3. 名言警句:说能做的做说过的

  1. 原创不易,还希望各位大佬支持一下
  2. \textcolor{blue}{原创不易,还希望各位大佬支持一下}
  3. 原创不易,还希望各位大佬支持一下

👍

  1. 点赞,你的认可是我创作的动力!
  2. \textcolor{green}{点赞,你的认可是我创作的动力!}
  3. 点赞,你的认可是我创作的动力!

⭐️

  1. 收藏,你的青睐是我努力的方向!
  2. \textcolor{green}{收藏,你的青睐是我努力的方向!}
  3. 收藏,你的青睐是我努力的方向!

✏️

  1. 评论,你的意见是我进步的财富!
  2. \textcolor{green}{评论,你的意见是我进步的财富!}
  3. 评论,你的意见是我进步的财富!
标签: es6 javascript 前端

本文转载自: https://blog.csdn.net/qq_49002903/article/details/126092740
版权归原作者 不苒 所有, 如有侵权,请联系我们删除。

“ES6——class类实现继承”的评论:

还没有评论