JavaScript---类及类的继承



前言

所谓类: 就是es6中对构造函数进行封装后的一种写法, 其本质其实也就是一个构造函数, 而其作用就是用来创建对象, 类通常是通过class来创建的;


提示:以下是本篇文章正文内容,下面案例可供参考


一、类的创建及属性和方法设置

 创建类--class

//学生类
class Student{}
//创建学生对象
let huahua = new Student()
console.log(huahua)

 从上图我们可以看出, 类已经被创建; 并且类中也是有prototype的, 也是有构造函数constructor的; 

 设置属性和方法---constructor

 class Student{
            // 设置属性
            // constructor(形参1, 形参2){
            //     this.属性= 形参1
            //     this.属性= 形参2
            // }
            constructor (uname, uage){
                this.uname =uname
                this.uage  =uage
            }
            // 设置方法
            // 方法名(){}
            // 方法名(){}
            eat(){
                console.log('烤羊腿yyds')
            }
        }

        //创建学生对象
        let huahua = new Student('华晨宇', 31)
        console.log(huahua)

 

 基本的一个类就创建好了

属性和方法之间相互调用的规则

调用eat方法, 会出现"烤羊腿yyds!" 如果我们要表示'华晨宇爱吃烤羊腿yyds!', 应该如何实现呢?

这就要用到属性和方法之间的相互调用.我们可以在eat方法下面写上:

eat(){
  console.log(this.uname + '爱吃'+'烤羊腿yyds')
     }

这样就实现了! 但是要注意:  1. 类中的方法调用属性时, 属性前面必须要加this; 2. 类中方法与方法之间相互调用, 方法前必须加this.


二、类的继承


1.子类继承父类---extends

代码如下(示例):

 class Marsper extends Student{}
 let marsper =new Marsper('火星人', 2)
 console.log(marsper)

 会看到子类Marsper已经继承成功, 并且是可以赋值的;


2.继承时子类含有constructor---super

如果子类是从父类继承过来的,并且此时子类中已经有constructor关键字创建的属性, 这时候,如果还想要继承父类的属性和方法, 就会出现这样的情况: 

 class Marsper extends Student{
     constructor(job) {
     this.job =job
        }
   }
 let marsper =new Marsper('火星人', 2, '歌手')
 console.log(marsper)

 报错, 并且错误中明确要求我们要在this前面调用super关键字来修改.

用上super关键字后

代码如下(示例):

class Marsper extends Student{
constructor(uname,uage,job) {
   super(uname,uage)
   this.job =job
    }
 }
let marsper =new Marsper('火星人', 2, '歌手')
console.log(marsper)


 看,这样就不报错了!


总结

 1. 子类在继承父类的时候, 如果子类中没有constructor, 则子类创建的对象完全可以继承父类中的属性和方法;

2. 如果子类中已经有constructor, 则继承时必须要在this前面添加super函数;

3. super()函数作用: 用来调用父类中的constructor, 类似于构造函数实现属性继承时的call函数.

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值