Какова цель передачи метода базовому классу в Javascript, как показано ниже?

#javascript

Вопрос:

Я видел учебник, в котором возможная функция передается родителю, как показано ниже:

 class Car {
  constructor(door, engine, color){
    this.door = door;
    this.engine = engine;
    this.color = color;
  }
  carStats(){
    console.log('in car stats...');
  }
}

class SUV extends Car {
  constructor(door, engine, color, brand, carStats){
    super(door, engine, color, carStats){
    this.brand = brand;
    this.wheels = 5;
    this.cheap = true;
  }
}
 

Есть ли какая-либо возможность перезаписи родительского метода, если вы передадите ему другую функцию?

Спасибо

Комментарии:

1. Что случилось, когда вы попробовали это для себя?

2. Не могли бы вы уточнить «возможная функция передается родителю» , где функция передается родителю?

3. Этот код не передает никакой функции родителю. Я не вижу связи вопроса с кодом, который его сопровождает.

4. @Энди, это будет проигнорировано, потому что JS игнорирует дополнительные параметры, но я спрашиваю как новичок, потому что может быть причина дизайна, по которой создается такой дополнительный параметр?

5. @2limin4tor этот вызов супер внедорожнику класса «Карстат» передается на базу.

Ответ №1:

При вызове super вы фактически вызываете конструктор для Car , но Car конструктор ожидает только 3 аргумента, а не 5.

Вы должны иметь возможность переопределить carStats метод, переопределив его, но я не думаю, что это считается лучшей практикой.

 class SUV extends Car {
    constructor(door, engine, color, brand, carStats){
        super(door, engine, color);
        this.carStats = carStats;
        this.brand = brand;
    }
}
 

Комментарии:

1. в конструкторе внедорожника есть «carStats», который может быть функцией, передаваемой ему при создании экземпляра, затем он переходит на базу через вызов SUPER, но зачем инструктору видео, которое я смотрел, создавать такой параметр, в чем причина этого? Допустим, если я передам объект функции экземпляру SUV (этот параметр «carStats»), как я могу использовать его для перезаписи метода carStats в классе Car и является ли он допустимым синтаксисом javascript? Спасибо