Reputation: 1
I'm trying to assign an object to the property of another object.
That is model of the real project. Here, I have a race, with an array of cars, which have an driver property. The driver property is an object. At the console output, I want to have a car with the name of the driver.
<script>
let carsNames = ["Ferrari", "Mercedes", "Maserati", "Renault"];
let drivers = ["Ayrton", "Alain", "Michael", "Nikki"];
let Car = (function (_team, _driver) {
let team = _team;
let driver = _driver;
return {
getTeam: function () {
return team;
},
getDriver: function () {
return driver;
}
}
});
let Driver = (function (_name) {
let name = _name;
return {
getName: function () {
}
}
});
let Race = (function () {
cars = [];
for (let i = 0; i < carsNames.length; i++) {
driver = new Driver(drivers[i]);
car = new Car(carsNames[i], driver);
cars.push(car);
}
return {
getCars: function () {
return cars;
}
}
});
let GPSyldavie = new Race();
let myrace = GPSyldavie.getCars();
myrace.forEach(function (mr) {
console.log(mr.getTeam(), mr.getDriver().getName());
})
// Console output :
// Ferrari undefined
// Mercedes undefined
// Maserati undefined
// Renault undefined
</script>
The point is to bind a driver with a car, but somewhere I fail to tell to the car that it is driven by a driver.
Upvotes: 0
Views: 41
Reputation: 11
You're getName function does not return anything...
let Driver = (function (_name) {
let name = _name;
return {
getName: function () {
}
}
});
Should look more like...
let Driver = (function (_name) {
let name = _name;
return {
getName: function () {
return name;
}
}
});
Upvotes: 1