Не срабатывает метод, добавленный в прототип конструктора на ванильном JavaScript
Изучаю функции-конструкторы и не понимаю, почему не работает метод, если его добавить в прототип родительского конструктора. При этом, находясь внутри самого конструктора (закомментированные строки), метод работает как надо. Вот код:
'strict mode';
export default function inheritage() {
function Vehicle(model, speed, weight, year, movement) {
this.model = model || "не определена",
this.speed = speed || "не определена",
this.weight = weight || "не определён",
this.year = year || "не определён",
this.movement = movement || "не определён.",
this.isActive = "снят с производства"
// this.getInfo = function () {
// alert(`Модель: ${this.model}.\nСкорость (км/ч): ${this.speed}.\nВес (кг): ${this.weight}.\nГод выпуска: ${this.year}.\nСпособ передвижения: ${this.movement}\nСтатус: ${this.isActive}.`);
// }
}
Vehicle.prototype.getInfo = function () {
alert(`Модель: ${this.model}.\nСкорость (км/ч): ${this.speed}.\nВес (кг): ${this.weight}.\nГод выпуска: ${this.year}.\nСпособ передвижения: ${this.movement}\nСтатус: ${this.isActive}.`);
}
function Car(model, speed, weight, year) {
Vehicle.apply(this, arguments);
this.movement = 'ездил по асфальту';
}
let racingCar = new Car('McLaren MP4/7A', 380, 505, 1992);
console.log(racingCar);
racingCar.getInfo();
debugger;
};
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
function Vehicle(model, speed, weight, year, movement) {
this.model = model || "не определена",
this.speed = speed || "не определена",
this.weight = weight || "не определён",
this.year = year || "не определён",
this.movement = movement || "не определён.",
this.isActive = "снят с производства"
}
Vehicle.prototype.getInfo = function() {
alert(`Модель: ${this.model}.\nСкорость (км/ч): ${this.speed}.\nВес (кг): ${this.weight}.\nГод выпуска: ${this.year}.\nСпособ передвижения: ${this.movement}\nСтатус: ${this.isActive}.`);
}
function Car(model, speed, weight, year) {
Vehicle.apply(this, arguments);
this.movement = 'ездил по асфальту';
}
Car.prototype = Object.create(Vehicle.prototype);
let racingCar = new Car('McLaren MP4/7A', 380, 505, 1992);
console.log(racingCar);
racingCar.getInfo();