Javascript es6 класс наследования - PullRequest
0 голосов
/ 23 октября 2018

Может кто-нибудь объяснить мне, почему вызов родительской функции из дочернего объекта сбрасывает переменные родительского класса.

class Garages {
    constructor() {
        this.garages = {};
    }

    addGarage(id) {
        this.garages[id] = {id};
        return this.garages[id];
    }

    getGarage(id) {
        alert(this.garages[id]); //why undefined?
    }
}

class Cars extends Garages {
    constructor() {
        super();
        this.cars = [];
    }

    getGarageByID(id) {
        this.getGarage(id)
    }
}

const cars = new Cars();
const garages = new Garages();

console.log(garages.addGarage("one"))
cars.getGarageByID("one")

FIDDLE

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Проблема № 1 заключается в том, что вы добавляете в один экземпляр и просите другой получить значение.

Проблема № 2 в том, что вы не возвращаетечто-нибудь из getGarageByID, следовательно, вы получите undefined.

Измените свой код на это:

class Garages {
    constructor() {
        this.garages = {};
    }
    addGarage(id) {
        this.garages[id] = {id};
        return this.garages[id];
    }
    getGarage(id) {
        return this.garages[id];
    }
}

class Cars extends Garages {
    constructor() {
        super();
        this.cars = [];
    }
    getGarageByID(id) {
        return this.getGarage(id)
    }
}

const cars = new Cars();

console.log(cars.addGarage("one"))
console.log(cars.getGarageByID("one"))

И вы должны оба получить на печать.

0 голосов
/ 23 октября 2018

, потому что экземпляр автомобилей отличается от гаражей, вы должны написать так:

 alert(cars.addGarage("one")) //alerts object
 alert(cars.getGarageByID("one"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...