Класс "Гамбургеры"
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){
...