Рубрики
Без рубрики

Ключевое слово JavaScript super

Когда мы работаем с классами в JavaScript, обычно используется ключевое слово super. В этом посте я хочу пояснить, для чего это полезно. Предположим, у вас есть класс Car: класс Car {} и в этом классе у нас есть метод конструктора(): класс Car {конструктор() {console.log(‘Это автомобиль’) } } Метод конструктора является особенным, потому что он выполняется при создании экземпляра класса: const Car() //’Это автомобиль’ У вас может быть класс Tesla, который расширяет класс автомобилей:

Когда мы работаем с классами в JavaScript, обычно используется ключевое слово super .

В этом посте я хочу пояснить, для чего это полезно.

Предположим, у вас есть класс Автомобиль :

class Car {

}

и в этом классе у нас есть метод конструктор() :

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 , включая метод конструктор .

Мы можем создать экземпляр класса Tesla , создав новый объект myCar :

const myCar = new Tesla()

И оригинальный конструктор в Car все еще выполняется, потому что у Tesla нет своего собственного.

Мы можем переопределить метод конструктор() в классе Тесла :

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

и

const myCar = new Tesla()

будет печатать Это Тесла .

В методе конструктор() мы также можем вызвать супер() для вызова того же метода в родительском классе:

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'

Обратите внимание, что super() может вызываться только в конструкторе, а не в других методах.

И мы можем передать любой параметр, если конструктор принимает параметры.

Оригинал: “https://flaviocopes.com/javascript-super/”