Класс "Гамбургеры"

GekkBrains JS vol.2 les.1

by Артур Бакаев

JavaScript

/*Конструктор класса Hamburger*/
function Hamburger (size, stuffing) {
	this._size = size;
  this._stuffing = stuffing;
  this._toppings = [];
}  

/*Константы для класса Hamburger*/
Hamburger.prototype = {
	SIZE_SMALL: { name: 'маленький', price: 50, calories: 20 },
  SIZE_LARGE: { name: 'большой', price: 100, calories: 40 },
  STUFFING_CHEESE: { name: 'сыр',  price: 10, calories: 20 },
  STUFFING_SALAD: { name: 'салат', price: 20, calories: 5},
  STUFFING_POTATO: { name: 'картошка', price: 15, calories: 10},
  TOPPING_SPICE: { name: 'приправа', price: 10, calories: 0},
  TOPPING_MAYO: { name: 'майонез', price: 20, calories: 5}
}

/*Сохранение конструктора*/
Hamburger.prototype.constructor = Hamburger;

/*Метод addToping для класса Hamburger*/
Hamburger.prototype.addTopping  = function ( topping ){
	var error = false;
  var msg = '';
	for (var key in this) {
  	if(key.indexOf('TOPPING_') + 1 && this[key].name===topping){
    	this._toppings.forEach( function (item, i, arr) {
        if(item===topping){
        	error = true;
        }
      });
      if(!error){
      	this._toppings.push(topping);
        msg = 'добавка "'+topping+'" добавлена, всё хорошо';
      }else{
      	msg = 'добавка "'+topping+'" уже добавлена, бро';
      }
    }
	}
  msg = msg.length > 0 ? msg : 'добавка "'+topping+'" не найдена, бро';
  alert(msg);
}

/*Метод removeToping для класса Hamburger*/
Hamburger.prototype.removeTopping  = function ( topping ){
	var error = true;
  var msg = '';
  var ekey = '';
	this._toppings.forEach( function (item, i, arr) {
    if(item===topping){
    	error = false;
      ekey = i;
    }
  });
  if(!error){
  	this._toppings.splice(ekey,ekey);
  	msg = 'Добавка "'+topping+'" успешно удалена';
  }else{
  	msg = 'Добавка "'+topping+'" не найдена среди ваших добавок';
  }
  alert(msg);
}

/*Метод getTopings для класса Hamburger*/
Hamburger.prototype.getToppings  =  function(){
	msg = 'Ваши добавки: / ';
	if(this._toppings.length>0){
 ...