Ключевое слово 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: