【学习笔记】JavaScript中super

最近在开发中见到了super,但是对这块不是很清楚,所以学习了一下,并进行一个小小的总结,方便自己再度加强记忆,也方便小伙伴们一起查询。因为也是学习过程,如果文中有理解错误的地方,请评论区中指正,十分感谢1.super的概念在MDN中对super的定义如下:super关键字用于访问和调用一个对象的父对象上的函数。super.prop和super[expr]表达式在类和对象字面量任何方法定义中都是有效的。其实我理解就是super关键字可以用在类和对象里面,并且可用于访问父类/父对象的构造函数和
摘要由CSDN通过智能技术生成

最近在开发中见到了super,但是对这块不是很清楚,所以学习了一下,并进行一个小小的总结,方便自己再度加强记忆,也方便小伙伴们一起查询。
因为也是学习过程,如果文中有理解错误的地方,请评论区中指正,十分感谢

1.super的概念

在MDN中对super的定义如下:

super关键字用于访问和调用一个对象的父对象上的函数。
super.prop和super[expr]表达式在类和对象字面量任何方法定义中都是有效的。

其实我理解就是super关键字可以用在类和对象里面,并且可用于访问父类/父对象构造函数和方法

2.super的几种应用

2.1 super在类中调用构造函数

class Polygon {
   
    constructor(height, width) {
   
      this.name = 'Rectangle';
      this.height = height;
      this.width = width;
    }
    static sayName() {
   
      console.log('Hi, I am a ', this.name + '.');
    }
  }
  
  class Square extends Polygon {
   
    constructor(length) {
   
      // ReferenceError,super 需要先被调用!
        this.color = 'red'; 
      
      // 这里,它调用父类的构造函数的,  作为Polygon 的 height, width
      super(length, length);
      
      // 在这可以使用this,注意:在使用this之前, 必须先调用super()。
      this.color = 'red';
    }
  }

在这里要强调的是:在构造函数中使用时,super必须在this之前使用,这点要牢记。

这是因为:ES6的继承,需要先创建父类的this,子类调用super继承父类的this对象,然后再加工。

换句话说,子类没有自己的this对象,而是继承父亲的this对象,然后进行加工。如果不调用super,子类就得不到this对象。

2.2 super在类中调用静态方法

class Rectangle {
   
    static logNbSides() {
   
      <
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值