JSFiddle - React, Tailwind, and code Playground
JavaScript
function Hamburger(size, stuffing) {
var sizeError = true;
var stuffingError = true;
for(var key in this.getSizes()){
if(size == key){
sizeError = false;
}
}
if(sizeError){
throw new Error("Неправильный формат size " + size);
}
for(var key in this.getStuffings()){
if(stuffing == key){
stuffingError = false;
}
}
if(stuffingError){
throw new Error("Неправильный формат stuffing " + stuffing);
}
this._size = size;
this._stuffing = stuffing;
this._toppings = [];
}
Hamburger.SIZE_SMALL = "small";
Hamburger.SIZE_BIG = "big";
Hamburger.STUFFING_CHEESE = "cheese";
Hamburger.STUFFING_SALAD = "salad";
Hamburger.STUFFING_POTATOES = "potatoes";
Hamburger.TOPPING_MAYO = "mayo";
Hamburger.TOPPING_SAUCE = "sauce";
Hamburger.prototype.addTopping = function(topping) {
var toppingError = true;
for(var key in this.getToppings()){
if(topping == key){
toppingError = false;
}
}
if(toppingError){
throw new Error("Неправильный формат topping " + topping);
}
if(this.checkToppingForDuplicates(topping)){
throw new Error("Топпинг уже добавлен");
}
this._toppings.push(topping);
};
Hamburger.prototype.calculateCalories = function() {
return this.calculate('calories');
};
Hamburger.prototype.calculatePrice = function() {
return this.calculate('price');
};
Hamburger.prototype.calculate = function(property){
var calculationResult = 0;
calculationResult+= this.getSizeProperty(this._size, property);
calculationResult+= this.getStuffingProperty(this._stuffing, property);
for(var i = 0; i<this._toppings.length; i++){
calculationResult+= this.getToppingProperty(this._toppings[i], property);
}
return calculationResult;
}
Hamburger.prototype.getSizes = function(){
var sizes = {};
...