ES6——super关键字

本文详细解析了ES6中super关键字的两种使用场景:一是作为方法在子类构造函数中调用父类构造函数;二是作为对象在子类中访问父类的方法。super作为方法使用时,必须在子类构造函数中调用,用于初始化父类属性;作为对象使用时,可以调用父类的任意方法,并自动绑定子类的this。

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

super关键字有两种使用场景

1、当用作方法时

在ES6的构造函数中,ES6的语法规定,在继承于父类的子类的构造函数中,必须使用super(),因为在子类中是不存在上下文指向(this)的,需要使用super()继承父类的构造函数,在此,super()代指的是父类的构造函数,但是super()返回的是子类的上下文(this),加入B继承于A,那么super()就相当于 A.prototype.constructor.call(this, props)

class A {}
class B extends A {
  constructor() {
    super()
  }
}

2.当做对象使用时

class A {
  fn(){
    return 100
  }
}
class B extends A {
  console.log(super.fn)  //100
}

在子类中使用super对象时,相当于父类的原型链,即super.fn==A.prototype.fn,在子类中使用super调用父类的函数时,super会绑定子类的this为被调用方法的上下文对象,即默认执行了super.fn.call(this)

注:在调用super时,必须显示指定super是作为函数还是对象使用,比如,console.log(super)会报错,因为super的数据类型不明确

文章参考来源:https://www.jianshu.com/p/fc79756b1dc0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值