#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? Спасибо