ES6 class 类 extends 继承 super

本文详细介绍了ES6中的`class`、`extends`和`super`关键字。`class`用于定义类,`constructor`作为构造方法处理实例对象。`extends`关键字允许类之间的继承,相比ES5的原型链继承更简洁。`super`作为父类实例的引用,子类必须在构造函数中调用`super()`,否则无法创建实例。通过`super`可以传递参数,初始化父类属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class person{
    constructor(age,sex){
    this.age=age
    this.sex=sex
    this.hobby="running"
    this.name="ling"
    }
    say(word){
        alert(word)
    }
}

let ling=new person()
     ling.say("hello") //alert("hello")
 
class baby extends person{
    constructor(){
        super("5months","female") //这里和上面person 类在 constructor 传入的两个参数
        this.name="xinxin"
        this.food="milk"         //constructor 中,可以添加新属性,或者其他代码
        alert("这个是baby类")
    }
}

let xinxin =new baby()

console.log(xinxin)    //constructor 内所有代码被执行;打印台中显示 xinxin 这个对象的内容
console.log(xinxin.age)
console.log(xinxin.food)

 

console.log(xinxin)
console.log(xinxin.age)
console.log(xinxin.food)

运行后效果:执行了 constructor中的所有代码(alert("这个是baby类")),并在控制台 返回了 xinxin 这个对象的信息

 运行后打印台输出  

class:

上面代码首先用class定义了一个“”,可以看到里面有一个constructor方法,这就是构造方法,而this关键字则代表实例对象。简单地说,constructor内定义的方法和属性是实例对象自己的,而constructor外定义的方法和属性则是所有实例对象可以共享的。constructor 中可以写任意代码(可以新增属性、方法,或设置值,也可以是其他任意代码,且可运行)

extends:

class之间可以通过extends关键字实现继承,这比ES5的通过修改原型链实现继承,要清晰和方便很多。上面定义了一个Cat类,该类通过extends关键字,继承了Animal类的所有属性和方法。

super:

super关键字,它指代父类的实例(即父类的this对象)。子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。super(args)可以传参:如果父类 constructor(args) 传入参数args,super(args) 可以把参数值传入,赋值给子类相关的属性值。

constructor(age,sex)

例如,例子中父类person 在 constructor 传入了 age和sex 两个参数。当使用 super 关键字时,super(arg1,arg2) 传入 arg1 和arg2 将会赋值给相对应的属性 (父类对应的是 this.age 和 this.sex)

ES6的继承机制,实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值