JS: Проблема с конфигуратором
Изучаю JS, пытаюсь ршить задачку от HTML Acedemy, получаю странные ошибки.
Задача выглядит так:
let materialPrice = {
'wood': 1000,
'stone': 1500,
'brick': 2000
};
let house = {
rooms: 10,
floors: 5,
material: 'wood',
coefficient: 10.5
};
/* Техническое задание
Мяу! Допиши за меня конфигуратор. Я создал объект house и задал ему несколько свойств: rooms (количество комнат), floors (этажи), material (материал для стен), coefficient (средняя площадь каждой комнаты).
Ещё я завёл мапу materialPrice, в которой записал стоимость каждого возможного материала для строительства.
Добавь в объект два метода: calculateSquare, который будет возвращать площадь дома, и calculatePrice, который будет возвращать стоимость строительства.
Площадь считай так: умножь количество комнат на коэффициент и число этажей в доме.
Цена строительства — произведение площади и стоимости материала дома.
*/
Вот мое решение:
let materialPrice = {
'wood': 1000,
'stone': 1500,
'brick': 2000
};
let buildHouse = function (rooms, floors, material, coefficient) {
let house = {
rooms: 10,
floors: 5,
material: 'wood',
coefficient: 10.5,
calculateSquare: function () {
return this.rooms * this.coefficient * this.floors;
},
calculatePrice: function () {
return calculateSquare * materialPrice[this[material]];
}
}
return house;
}
buildHouse();
Получаю ошибку
Я пробовал разные варианты, в том числе мапил атрибутиы переданные через функцию:
let house = {
rooms: rooms,
floors: floors,
material: material,
coefficient: coefficient
};
Пробовал создавать и вызывать функцию ниже объекта home. Пробовал много всего и получаю либо что объект house удален, либо что метод calculateSquare не определен.
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Не Square, а Area.
//let buildHouse = function (rooms, floors, material, coefficient) {
let house = {
rooms: 10,
floors: 5,
material: 'wood',
coefficient: 10.5,
calculateSquare: function () {
return this.rooms * this.coefficient * this.floors;
},
calculatePrice: function () {
return this.calculateSquare() * materialPrice[this.material];
}
}
//return house;
//}
