Почему некорректно работает код ? Работа с class

Рейтинг: 0Ответов: 1Опубликовано: 10.01.2023

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

class Human {
    constructor(name,sex) {}
}
const humanInfo = new Human('Dmitriy','male');
const humanInfo1 = new Human('Andrew','male');
const humanInfo2 = new Human('Nasty','female');
const humanInfo3 = new Human('Dina','female');

class Flat {
    #arrayOfResidents = [];
    getResident (humanInfo) {
        this.#arrayOfResidents = this.#arrayOfResidents.push(humanInfo);
    }
}
const flatInfo = new Flat();
flatInfo.getResident(humanInfo);

const flatInfo1 = new Flat();
flatInfo1.getResident(humanInfo1);

const flatInfo2 = new Flat();
flatInfo2.getResident(humanInfo2);

const flatInfo3 = new Flat();
flatInfo3.getResident(humanInfo3);

class House {
    #arrayOfFlats = [];
    constructor(maxQuantityOfFlats) {
        this.maxQuantityOfFlats = maxQuantityOfFlats;
    }
    addFlat (flatInfo) {
        if (this.maxQuantityOfFlats >= 3) {
            this.#arrayOfFlats = this.#arrayOfFlats.push(flatInfo);
        }
        else {
            console.log('Недостаточно квартир в данном доме')
        }
    }
}
const houseInfo = new House(10);
houseInfo.addFlat(flatInfo);
houseInfo.addFlat(flatInfo3);
const houseInfo1 = new House(7);
houseInfo1.addFlat(flatInfo1);
houseInfo1.addFlat(flatInfo2);

Ответы

▲ 1Принят

Ошибка возникает так как метод push возвращает true|false а не массив новый. В результате this.#arrayOfFlats = this.#arrayOfFlats.push(flatInfo); данной операции this.#arrayOfFlats становится равным true а у boolean значения нет метода push.

Решение. Не надо ничего присваивать после выполнения push. Все изменения произойдут по ссылке