Как добавить класс к параметрам большого класса Javascript - PullRequest
0 голосов
/ 07 сентября 2018

Я работал над этим кодом полтора часа, и у меня все еще есть проблемы. Это мой первый день с объектами JavaScript, и я не уверен, что какой-либо из моих кодов является лучшей практикой.

function Car(carModel, carManufacturer, carHorsepower, carOwner) {
    this.model = carModel;
    this.manufacturer = carManufacturer;
    this.horsepower = carHorsepower;
    this.owner = carOwner;
}

function changeCarModel(car,newModel) {
    this.model = newModel;
}

function changeCarManufacturer(car,newmanufacturer) {
    this.manufacturer = newmanufacturer;
}

function changeCarHorsepower(car,newHorsepower) {
    this.horsepower = newHorsepower;
}

function changeCarOwner(car, newOwner) {
    this.owner = newOwner;
}

 function logCarInfo(car) {
     console.log(this.model);
     console.log(this.manufacturer);
     console.log(this.horsepower);
     console.log(this.owner);
}

//TODO Add an owner object!
function Owner(newName, newAddress) {
    name = newName;
    address = newAddress;
}

function changeOwnerName(owner, newName) {
    owner.name = newName;
}

function changeOwnerAddress(owner, newAddress) {
    owner.address = newAddress;
}

function main() {
    var toyota = Car('Supra', 'Toyota', '800');
    logCarInfo(toyota);
    changeCarHorsepower(toyota, '10000');
    console.log('-------');
    logCarInfo(toyota);
    changeCarHorsepower(toyota, '1000');
    console.log('-------');
    logCarInfo(toyota);
    changeCarManufacturer(toyota, 'Ford');
    console.log('-------');
    logCarInfo(toyota);
    var cooperCodes = Owner('Cooper', '1919 12th Street');
    console.log('New Owner Made');
    changeCarOwner(toyota, cooperCodes);
    logCarInfo(toyota);

}

main();

Так что мне нужна помощь в этом, когда я попытался добавить this.owner = carOwner, а затем добавить нового владельца к объекту car, console.log печатает undefined. Я не уверен, почему это происходит, и если вы кто-нибудь знаете эту проблему, это будет так много значить для меня.

1 Ответ

0 голосов
/ 07 сентября 2018

Вам не хватает this в вашей функции Owner

function Owner(newName, newAddress) {
    this.name = newName;
    this.address = newAddress;
}

Кроме того, если вы не хотите показывать undefined, проверьте, присутствует ли значение, прежде чем присваивать

function Car(carModel, carManufacturer, carHorsepower, carOwner) {
    this.model = carModel ? carModel : null;
    this.manufacturer = carManufacturer ? carManufacturer : null;
    this.horsepower = carHorsepower ? carHorsepower : null;
    this.owner = carOwner ? carOwner : null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...