Объекты 30/30

Подскажите пож по поводу кода, задача одобрена и работает, хочу уточнить нюанс, можно ли как-то при подсчете цены (материал*площадь) написать код из двух множителей? Сейчас это легко реализуемо, но если например площадь считалась бы долго, второй раз вставлять было бы глупо. Пытался сделать через переменные но никак не вышло

var materialPrice = {
‘wood’: 1000,
‘stone’: 1500,
‘brick’: 2000
};

var house = {
rooms: 10,
floors: 5,
material: ‘wood’,
coefficient: 10.5,

calculateSquare: function (){
return this.roomsthis.coefficientthis.floors},

calculatePrice: function() {
return materialPrice[this.material]this.roomsthis.coefficient*this.floors
}

};

код “как есть”

var materialPrice = {
‘wood’: 1000,
‘stone’: 1500,
‘brick’: 2000
};

var house = {
  rooms: 10,
  floors: 5,
  material: 'wood',
  coefficient: 10.5,
  
  calculateSquare: function (){
    return this.rooms*this.coefficient*this.floors},
        
  calculatePrice: function() {
    return materialPrice[this.material]*this.rooms*this.coefficient*this.floors
    }

};

Да, даже всех трех. Вызвать внутри метода calculatePrice уже ранее объявленный метод calculateSquare, или любой другой вам необходимый - если я правильно понял постановку задачи.

Можете написать как это выглядит кодом? я еще путаюсь в терминах, так как вы пишете у меня выдает ошибку, видимо что-то не так понял

var materialPrice = {
  'wood': 1000,
  'stone': 1500,
  'brick': 2000
};

var house = {
  rooms: 6,
  floors: 8,
  material: 'brick',
  coefficient: 10,
  calculateSquare: function() {
    return this.rooms * this.floors * this.coefficient;
  },
  calculatePrice: function() {
    return this.calculateSquare() * materialPrice[this.material];
  }
};

вот так это будет, во втором методе идет подвызов первого метода.
методом называется функция, записанная в свойство объекта и которая чё-то возвращает.
тут аккуратнее, может башню снести, но вообще в js всё рассматривается как объекты. даже стандартный математический объект и консоль. поэтому они и имеют свои глобальные методы, которые вы уже использовали, но не задумывались об этом.
типа console.log(), где console это объект, а .log - её метод.
или Math.round(), где Math это математический объект, а .round - его метод.

1 лайк

Как все глобально! Правда, не задумывалась как все работает!)