Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
function Hamburger(size, stuffing){
  this.size = Hamburger.prototype.designationSize(size);
  this.stuffing = Hamburger.prototype.designationStuffing(stuffing);
  this.topping = [];  
}
Hamburger.prototype.settingsHamburger = { //сетинг гамбургера
  "size": {
    "SMALL": {"currency": 50, "calories": 20}, 
    "BIG": {"currency": 100, "calories": 40}
  },
  "stuffing": {
    "CHEESE": {"currency": 10, "calories": 20},
    "SALAD": {"currency": 20, "calories": 5},
    "POTATO": {"currency": 15, "calories": 10}
  },
  "topping": {
    "SAUCE": {"currency": 15, "calories": 0},
    "MAYO": {"currency": 20, "calories": 5}
  }
};
Hamburger.prototype.designationSize = function (size){ //определение размера гамбургера 
  try { //если такой размер существует, добавляем его в поле(*) объекта 
        //(*)(не уверен так ли это называется в hamburger.size кароче;) 
    for(var key in this.settingsHamburger["size"]) if(size === key) return this.settingsHamburger["size"][size];
    throw new ReferenceError("Введите размер гамбургера");  
  } catch(err) {                                            
    console.log("Ведите корректные данные(BIG/SMALL), это обязательные характеристики.\nИмя ошибки: " 
      + err.name + "\nСообщение: " + err.message + "\nСтек: " + err.stack);
  }
};
Hamburger.prototype.designationStuffing = function (stuffing){ //определение начинки
  try { //если такая начинка существует, добавляем её в поле объекта 
    for(var key in this.settingsHamburger["stuffing"]) if(stuffing === key) return this.settingsHamburger["stuffing"][stuffing];
    throw new ReferenceError("Ведите начинку гамбургера"); 
  } catch(err) {
    console.log("Ведите корректные данные(CHEESE/SALAD/POTATO), это обязательные характеристики.\nИмя ошибки: " 
      + err.name + "\nСообщение: " + err.message + "\nСтек: " + err.stack);
  }
};
Hamburger.prototype.addTopping = function(topping){ //добавляем топинг
  try { //если такой топинг существует, добавляем его в поле объекта 
    for(var key in this.settingsHamburger["topping"]) {  
        if(topping === key) {
        this.topping.push(this.settingsHamburger["topping"][topping]);   
        return;
        }
    }
    throw new ReferenceError(topping + " - Такой добавки нет");
  } catch(err) {
    console.log("Ведите корректные данные(MAYO/SAUCE).\nИмя ошибки: " 
      + err.name + "\nСообщение: " + err.message + "\nСтек: " + err.stack);
  }
};
Hamburger.prototype.calculateCalories = function (){ //рачет каллорий 
  try{ //если обязательные характеристики не определены, то тров еррор
    if(this.stuffing === undefined || this.size === undefined) throw new Error("Недостаточно данных");
    return this.size["calories"] + this.stuffing["calories"] + 
      (this.topping[0] ? this.topping[0]["calories"] : 0) + 
      (this.topping[1] ? this.topping[1]["calories"] : 0);
  } catch(err) {
    console.log("Имя ошибки: " + err.name + "\nСообщение: " + err.message + "\nСтек: " + err.stack);
    return 0;
  }
};
Hamburger.prototype.calculatePrice = function (){ //рачет цены
  try { //если обязательные характеристики не определены, то тров еррор
    if(this.size === undefined || this.stuffing === undefined) throw new Error("Недостаточно данных");
    return this.size["currency"] + this.stuffing["currency"] + 
      (this.topping[0] ? this.topping[0]["currency"] : 0) + 
      (this.topping[1] ? this.topping[1]["currency"] : 0);
  } catch(err) {
    console.log("Имя ошибки: " + err.name + "\nСообщение: " + err.message + "\nСтек: " + err.stack);
    return 0;
  } 
};
var hamburger = new Hamburger("SMALL", "SALAD");
hamburger.addTopping("MAYO"); 
hamburger.addTopping("SAUCE");
console.log("SMALL/SALAD/MAYO/SAUCE");
console.log("Calories: " + hamburger.calculateCalories());
console.log("Price: " + hamburger.calculatePrice());
console.log("\n")
var hamburger2 = new Hamburger("BIG", "CHEESE");
hamburger2.addTopping("SAUCE");
console.log("BIG/CHEESE/SAUCE");
console.log("Calories: " + hamburger2.calculateCalories());
console.log("Price: " + hamburger2.calculatePrice());
Output

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

Dismiss x
public
Bin info
anonymouspro
0viewers