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 = {};

   ...