<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
</body>
</html>
function Hamburger() {
}
Hamburger.SIZE_SMALL = 'МАЛЕНЬКИЙ';
Hamburger.SIZE_BIG = 'БОЛЬШОЙ';
Hamburger.FILLING_CHEESE = 'СЫР';
Hamburger.FILLING_SALAD = 'САЛАТ';
Hamburger.FILLING_POTATO = 'КАРТОШКА';
Hamburger.ADDITIVE_SEASONING = 'ПРИПРАВА';
Hamburger.ADDITIVE_MAYO = 'МАЙОНЕЗ';
Hamburger.type = {};
Hamburger.filling = {};
Hamburger.additive = {};
Hamburger.type[Hamburger.SIZE_SMALL] = { price: 50, calor: 20 };
Hamburger.type[Hamburger.SIZE_BIG] = { price: 100, calor: 40 };
Hamburger.filling[Hamburger.FILLING_CHEESE] = { price: 10, calor: 20 };
Hamburger.filling[Hamburger.FILLING_SALAD] = { price: 20, calor: 5 };
Hamburger.filling[Hamburger.FILLING_POTATO] = { price: 15, calor: 10 };
Hamburger.additive[Hamburger.ADDITIVE_SEASONING] = { price: 15, color: 0 };
Hamburger.additive[Hamburger.ADDITIVE_MAYO] = { price: 20, calor: 5 };
Hamburger.prototype.makeSelection = function(hamburger, filling, additive) { /* метод для создания заказа */
this.order = {};
this.text = 'Ваш заказ: ';
this.correctHamb = false;
this.correctFill = false;
for (var size in Hamburger.type) {
if (hamburger == size) {
this.order.hamburger = Hamburger.type[size];
this.text += 'Гамбургер: ' + size + ', ';
this.correctHamb = true;
}
}
if (!this.correctHamb) { return 'Несуществующий вид гамбургера. Попробуйте снова.'; } /*Проверка на корректность*/
for (var typeFilling in Hamburger.filling) {
if (filling == typeFilling) {
this.order.filling = Hamburger.filling[typeFilling];
this.text += 'Начинка: ' + typeFilling;
this.correctFill = true;
}
}
if (!this.correctFill) { return 'Несуществующий вид начинки. Попробуйте снова.'; } /*Проверка на корректность*/
if (additive || (arguments[2] && additive === undefined)) {
return this.makeAdditive(additive);
} else {
this.correctAddi = true;
return this.text;
}
};
Hamburger.prototype.makeAdditive = function(additive) { /*Добавка*/
this.correctAddi = false;
for (var typeAdditive in Hamburger.additive) {
if (additive == typeAdditive) {
this.order.additive = Hamburger.additive[typeAdditive];
this.text += ', Добавка: ' + typeAdditive;
this.correctAddi = true;
}
}
if (!this.correctAddi) { /* Проверка на корректность */
return 'Несуществующий вид добавки. Попробуйте снова.';
} else {
return this.text;
}
};
Hamburger.prototype.calcPrice = function() { /* метод рассчета суммы */
this.generalPrice = 0;
if (!this.correctHamb || !this.correctFill || !this.correctAddi) {
return 'Сделайте заказ!';
}
for (var name in this.order) {
this.generalPrice += this.order[name].price;
}
return 'Стоимость: ' + this.generalPrice;
};
Hamburger.prototype.calcCalor = function() { /*метод рассчета калорийности*/
this.generalCal = 0;
if (!this.correctHamb || !this.correctFill || !this.correctAddi) {
return 'Сделайте заказ!';
}
for (var name in this.order) {
this.generalCal += this.order[name].calor;
}
return 'Количество калорий: ' + this.generalCal;
};
var order1 = new Hamburger();
console.log(1);
console.log(order1.makeSelection(Hamburger.SIZE_BIG, Hamburger.FILLING_SALAD, Hamburger.ADDITIVE_MAYO));
console.log(order1.calcPrice());
console.log(order1.calcCalor());
var order2 = new Hamburger();
console.log(2);
console.log(order2.makeSelection(Hamburger.SIZE_SMALL, Hamburger.FILLING_POTATO));
console.log(order2.calcPrice());
console.log(order2.calcCalor());
var order3 = new Hamburger();
console.log(3);
console.log(order3.makeSelection(Hamburger.SIZE_BIG, Hamburger.FILLING_POTATO, Hamburger.ADDATIVE_SEASONING));
console.log(order3.calcPrice());
console.log(order3.calcCalor());
var order4 = new Hamburger();
console.log(4);
console.log(order4.calcPrice());
console.log(order4.calcCalor());
console.log(order4.makeSelection(Hamburger.SIZE_SMALL, Hamburger.FILLING_SALAD));
var order5 = new Hamburger();
console.log(5);
console.log(order5.makeSelection(Hamburger.SIZE_MIDDLE, Hamburger.FILLING_SALAD));
console.log(order5.calcPrice());
console.log(order5.calcCalor());
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |