JavaScript对象或类的关键字super

super关键字用于调用一个对象的父对象上的构造函数或方法。

语法

// 调用 父对象/父类 的构造函数
super([arguments]);

// 调用 父对象/父类 上的方法
super.functionOnParent([arguments]);

调用 父对象/父类 的构造函数

在构造函数中使用时,super关键字必须在使用this关键字之前使用。

class Polygon {
  constructor(height, width) {
    this.name = 'Rectangle';
    this.height = height;
    this.width = width;
  }
  sayName() {
    console.log('Hi, I am a ', this.name + '.');
  }
  get area() {
    return this.height * this.width;
  }
  set area(value) {
    this._area = value;
  }
}

class Square extends Polygon {
  constructor(length) {
    this.height; // ReferenceError,super 需要先被调用!

    // 这里,它调用父类的构造函数的,
    // 作为Polygon 的 height, width
    super(length, length);

    // 注意: 在派生的类中, 在你可以使用'this'之前, 必须先调用super()。
    // 忽略这, 这将导致引用错误。
    this.name = 'Square';
  }
}

调用 父对象/父类 的静态方法

class Rectangle {
  constructor() {}
  static logNbSides() {
    return 'I have 4 sides';
  }
}

class Square extends Rectangle {
  constructor() {}
  static logDescription() {
    return super.logNbSides() + ' which are all equal';
  }
}
Square.logDescription(); // 'I have 4 sides which are all equal'

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/javascripte/9600.html

(0)
上一篇 2021年11月11日 08:31
下一篇 2021年11月16日 01:27

相关推荐

  • JavaScript中script元素的位置

    过去,所有<script>都放在<head>标签内,如下所示: 这样做的目的是把外部的 CSS 和 JavaScript 文件都集中放在一起,缺点就是,必须把所有的 JavaScript 的文件都下载、解析和解释执行完成后,才能渲染<body>页面,这会导致页面渲染明显延迟,为了解决…

    JavaScript经验 2020年10月7日
    06000
  • JavaScript函数或类的this关键字

    与其他语言相比,函数的 this 关键字在 JavaScript 中的表现略有不同。 在非严格模式下,总是指向一个对象,在严格模式下可以是任意值。 在绝大多数情况下,函数的调用方式决定了 this 的值(运行时绑定)。ES5 引入了 bind 方法来设置函数的…

    JavaScript经验 2021年11月16日
    02360
  • JavaScript对象的可计算属性名

    ECMAScript的对象的键往往是确定的,如果想要实现对象的键根据实际情况赋予不同的键的话,那就得用 可计算属性名 这个功能,把需要计算的表达式放在方括号[]里面。 在ECMA262-5(2009)里面的做法是: 从ECMA262-6(2015)开始添加了可计算属性名这个功能,这里这样做:

    JavaScript经验 2021年11月17日
    02660

发表评论

登录后才能评论