Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
function Hamburger() {
  
}
Hamburger.SIZE_SMALL = 'SMALL';
Hamburger.SIZE_BIG = 'BIG';
Hamburger.FILLING_CHEESE = 'CHEESE';
Hamburger.FILLING_SALAD = 'SALAD';
Hamburger.FILLING_POTATO = 'POTATO';
Hamburger.ADDITIVE_SEASONING = 'SEASONING';
Hamburger.ADDITIVE_MAYO = 'MAYO';
Hamburger.type = {};
Hamburger.filling = {};
Hamburger.additive = {};
Hamburger.type[Hamburger.SIZE_SMALL] = { name: 'МАЛЕНЬКИЙ', price: 50, calor: 20 };
Hamburger.type[Hamburger.SIZE_BIG] = { name: 'БОЛЬШОЙ', price: 100, calor: 40 };
Hamburger.filling[Hamburger.FILLING_CHEESE] = { name: 'СЫР', price: 10, calor: 20 };
Hamburger.filling[Hamburger.FILLING_SALAD] = { name: 'САЛАТ', price: 20, calor: 5 };
Hamburger.filling[Hamburger.FILLING_POTATO] = { name: 'КАРТОШКА', price: 15, calor: 10 };
Hamburger.additive[Hamburger.ADDITIVE_SEASONING] = { name: 'ПРИПРАВА', price: 15, color: 0 };    
Hamburger.additive[Hamburger.ADDITIVE_MAYO] = { name: 'МАЙОНЕЗ', price: 20, calor: 5 };
Hamburger.IncorrectArgs = function(message) {
  this.message = message;
};
Hamburger.CheckTypeHamb = function(hamburger) {
  if (!Hamburger.type[hamburger]) {
      throw new Hamburger.IncorrectArgs("Несуществующий тип гамбургера!");
  }
};
Hamburger.CheckFilling = function(filling) {
  if (!Hamburger.filling[filling]) {
      throw new Hamburger.IncorrectArgs("Несуществующая начинка!");
  }
};
Hamburger.CheckAdditive = function(additive) {
  if (!Hamburger.additive[additive]) {
      throw new Hamburger.IncorrectArgs("Несуществующий тип добавки!");
  }
};
Hamburger.prototype.makeSelection = function(hamburger, filling) {     /* метод для создания заказа */
  var order = [];
  
  try {
    Hamburger.CheckTypeHamb(hamburger);
    order.push(Hamburger.type[hamburger]);
    
    Hamburger.CheckFilling(filling);
    order.push(Hamburger.filling[filling]);
  } catch(err) {
    console.log(err.message);
    order = [];
  }
  
  return order;
};
Hamburger.prototype.makeAdditive = function(additive) {    /*Добавка*/
  try {
    Hamburger.CheckAdditive(additive);
    return Hamburger.additive[additive];
  } catch(err) {
    console.log(err.message);
    return false;
  }
};
Hamburger.prototype.calcPrice = function() {  /* метод рассчета суммы */
  this.generalPrice = 0;
  
  if (!this.correctHamb || !this.correctFill || !this.correctAddi) {
    return 'Сделайте заказ!';
  }
  
  for (var name in this.order) {
    this.generalPrice += this.order[name].price;
  }
  
  return 'Стоимость: ' + this.generalPrice;
};
Hamburger.prototype.calcCalor = function() {     /*метод рассчета калорийности*/
  this.generalCal = 0; 
  
  if (!this.correctHamb || !this.correctFill || !this.correctAddi) {
    return 'Сделайте заказ!';
  }
  
  for (var name in this.order) {
    this.generalCal += this.order[name].calor;
  }
  
  return 'Количество калорий: ' + this.generalCal;
};
var order1 = new Hamburger();
console.log(1);
order1.list = order1.makeSelection(Hamburger.SIZE_BIG, Hamburger.FILLING_SALAD);
console.log(order1.list);
order1.additive = order1.makeAdditive(Hamburger.ADDITIVE_SEASONING);
console.log(order1.calcPrice());
console.log(order1.calcCalor());
/*var order2 = new Hamburger();
console.log(2);
console.log(order2.makeSelection(Hamburger.SIZE_SMALL, Hamburger.FILLING_POTATO));
console.log(order2.calcPrice());
console.log(order2.calcCalor());
var order3 = new Hamburger();
console.log(3);
console.log(order3.makeSelection(Hamburger.SIZE_BIG, Hamburger.FILLING_POTATO));
console.log(makeAdditive(Hamburger.ADDATIVE_SEASONING));
console.log(order3.calcPrice());
console.log(order3.calcCalor());
var order4 = new Hamburger();
console.log(4);
console.log(order4.calcPrice());
console.log(order4.calcCalor());
console.log(order4.makeSelection(Hamburger.SIZE_SMALL, Hamburger.FILLING_SALAD, Hamburger.ADDITIVE_MUSTARD));
var order5 = new Hamburger();
console.log(5);
console.log(order5.makeSelection(Hamburger.SIZE_MIDDLE, Hamburger.FILLING_SALAD));
console.log(order5.calcPrice());
console.log(order5.calcCalor());*/
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers