es6 class super关键字

本文深入探讨了super关键字在JavaScript类继承中的应用,包括作为函数调用父类构造方法及作为对象引用父类原型对象或父类本身。通过具体代码示例,详细解释了super在构造函数和普通方法中的不同作用。

super关键字不仅可以当做函数使用,也可以当做对象使用。

1.当函数使用时,通常在子类的constructor即构造方法内

class A{
  constructor(x){
        this.x = x;
    }      
}
class B extends A {
  constructor(x,y){
        super(x);
        this.y = y;
    }      
}

在这里,super()作用是,代表调用了父类的构造方法,函数返回了子类的实例。因为子类的构造方法是根据父类构建的,因此this关键字必须在调用super()函数之后使用,否则会报错。并且,子类构造函数内必须调用super()方法。

2.当做为对象使用时,在普通方法中指向父类的原型对象,在静态方法中指向父类。

class A  {
  static k (staMsg) {
    console.log('A'+staMsg);
  }
  constructor(x){
        this.x = x;
  }
  k () {
    return 9;
  }      
}
class B extends A {
  static k (staMsg) {
    super.k(staMsg);//调用父类的k方法,此时父类内部this指向子类
  }
  constructor(x,y){
        super(x);
        this.y = x;
     console.log(super.x);//x是父类实例上的属性,所以访问不到
      console.log(super.k); //输出9
  }             
}

 

转载于:https://www.cnblogs.com/yiangli/p/9761877.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值