JavaScript super关键字

当我们在JavaScript中使用类时,通常会使用super关键词。

在这篇文章中,我想阐明它的作用。

假设你有一堂课Car

class Car {

}

在这一节课中,我们有一个constructor()方法:

class Car {
  constructor() {
    console.log('This is a car')
  }
}

构造函数方法很特殊,因为它在实例化类时执行:

const myCar = new Car() //'This is a car'

你可以有一个Tesla扩展了Car班级:

class Tesla extends Car {

}

Tesla类继承了Car, 包括constructor方法。

我们可以创建一个实例Tesla类,创建一个新的myCar目的:

const myCar = new Tesla()

还有原始的构造函数Car仍然被执行,因为Tesla没有自己的一个。

我们可以覆盖constructor()中的方法Tesla班级:

class Tesla extends Car {
  constructor() {
    console.log('This is a Tesla')
  }
}

const myCar = new Tesla()

将打印This is a Tesla

在里面constructor()我们也可以调用的方法super()在父类中调用相同的方法:

class Tesla extends Car {
  constructor() {
    super()
    console.log('This is a Tesla')
  }
}

呼唤

const myCar = new Tesla()

现在将执行2个控制台日志。第一个是在Car类构造函数中定义的,第二个是在Tesla类构造函数中定义的:

'This is a car'
'This is a Tesla'

Note that super() can only be called in the constructor, not in other methods.

And we can pass in any parameter, if the constructor accepts parameters.


More js tutorials: