Le super mot-clé JavaScript

Lorsque nous travaillons avec des classes en JavaScript, il est courant d'utiliser lesupermot-clé.

Dans cet article, je veux clarifier à quoi cela sert.

Supposons que vous ayez une classeCar:

class Car {

}

et dans cette classe nous avons unconstructor()méthode:

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

La méthode constructeur est spéciale car elle est exécutée lorsque la classe est instanciée:

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

Vous pouvez avoir unTeslaclasse qui étend laCarclasser:

class Tesla extends Car {

}

LeTeslaclass a hérité de toutes les méthodes et propriétés deCar, incluant leconstructorméthode.

Nous pouvons créer une instance duTeslaclasse, création d'un nouveaumyCarobjet:

const myCar = new Tesla()

Et le constructeur d'origine enCarest toujours exécuté, carTeslan'en possède pas.

Nous pouvons remplacer leconstructor()méthode dans leTeslaclasser:

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

et

const myCar = new Tesla()

va imprimerThis is a Tesla.

Dans leconstructor()méthode que nous pouvons également appelersuper()pour appeler la même méthode dans la classe parent:

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

Appel

const myCar = new Tesla()

va maintenant exécuter 2 journaux de console. D'abord celui défini dans le constructeur de la classe Car, le second celui défini dans le constructeur de la classe 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: