beautify 1st part of the tutorial
This commit is contained in:
parent
e3dd2cedc0
commit
6444024a9d
327 changed files with 2358 additions and 1986 deletions
|
@ -15,7 +15,7 @@ coffeeMachine.run(); // ошибка, кофеварка выключена!
|
|||
|
||||
```js
|
||||
var coffeeMachine = new CoffeeMachine(10000);
|
||||
coffeeMachine.enable();
|
||||
coffeeMachine.enable();
|
||||
coffeeMachine.run(); // ...Кофе готов!
|
||||
```
|
||||
|
||||
|
|
|
@ -14,16 +14,16 @@ function Fridge(power) {
|
|||
if (food.length + arguments.length >= this._power / 100) {
|
||||
throw new Error("Нельзя добавить, не хватает мощности");
|
||||
}
|
||||
for(var i=0; i<arguments.length; i++) {
|
||||
food.push(arguments[i]); // добавить всё из arguments
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
food.push(arguments[i]); // добавить всё из arguments
|
||||
}
|
||||
};
|
||||
|
||||
this.getFood = function() {
|
||||
// копируем еду в новый массив, чтобы манипуляции с ним не меняли food
|
||||
return food.slice();
|
||||
return food.slice();
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
Код для проверки:
|
||||
|
||||
```js
|
||||
var fridge = new Fridge(200);
|
||||
var fridge = new Fridge(200);
|
||||
fridge.addFood("котлета"); // ошибка, холодильник выключен
|
||||
```
|
||||
|
||||
|
@ -22,9 +22,9 @@ fridge.addFood("котлета"); // ошибка, холодильник вык
|
|||
|
||||
```js
|
||||
// создать холодильник мощностью 500 (не более 5 еды)
|
||||
var fridge = new Fridge(500);
|
||||
var fridge = new Fridge(500);
|
||||
fridge.enable();
|
||||
fridge.addFood("котлета");
|
||||
fridge.addFood("котлета");
|
||||
fridge.addFood("сок", "зелень");
|
||||
fridge.addFood("варенье", "пирог", "торт"); // ошибка, слишком много еды
|
||||
```
|
||||
|
@ -32,18 +32,18 @@ fridge.addFood("варенье", "пирог", "торт"); // ошибка, с
|
|||
Код использования холодильника без ошибок:
|
||||
|
||||
```js
|
||||
var fridge = new Fridge(500);
|
||||
var fridge = new Fridge(500);
|
||||
fridge.enable();
|
||||
fridge.addFood("котлета");
|
||||
fridge.addFood("котлета");
|
||||
fridge.addFood("сок", "варенье");
|
||||
|
||||
var fridgeFood = fridge.getFood();
|
||||
alert(fridgeFood); // котлета, сок, варенье
|
||||
alert( fridgeFood ); // котлета, сок, варенье
|
||||
|
||||
// добавление элементов не влияет на еду в холодильнике
|
||||
fridgeFood.push("вилка", "ложка");
|
||||
fridgeFood.push("вилка", "ложка");
|
||||
|
||||
alert(fridge.getFood()); // внутри по-прежнему: котлета, сок, варенье
|
||||
alert( fridge.getFood() ); // внутри по-прежнему: котлета, сок, варенье
|
||||
```
|
||||
|
||||
Исходный код класса `Machine`, от которого нужно наследовать:
|
||||
|
|
|
@ -30,15 +30,15 @@ function Fridge(power) {
|
|||
if (food.length + arguments.length >= this._power / 100) {
|
||||
throw new Error("Нельзя добавить, не хватает мощности");
|
||||
}
|
||||
for(var i=0; i<arguments.length; i++) {
|
||||
food.push(arguments[i]); // добавить всё из arguments
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
food.push(arguments[i]); // добавить всё из arguments
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
this.getFood = function() {
|
||||
// копируем еду в новый массив, чтобы манипуляции с ним не меняли food
|
||||
return food.slice();
|
||||
return food.slice();
|
||||
};
|
||||
|
||||
*!*
|
||||
|
@ -53,25 +53,37 @@ function Fridge(power) {
|
|||
*/!*
|
||||
}
|
||||
|
||||
var fridge = new Fridge(500);
|
||||
var fridge = new Fridge(500);
|
||||
fridge.enable();
|
||||
fridge.addFood({ title: "котлета", calories: 100 });
|
||||
fridge.addFood({ title: "сок", calories: 30 });
|
||||
fridge.addFood({ title: "зелень", calories: 10 });
|
||||
fridge.addFood({ title: "варенье", calories: 150 });
|
||||
fridge.addFood({
|
||||
title: "котлета",
|
||||
calories: 100
|
||||
});
|
||||
fridge.addFood({
|
||||
title: "сок",
|
||||
calories: 30
|
||||
});
|
||||
fridge.addFood({
|
||||
title: "зелень",
|
||||
calories: 10
|
||||
});
|
||||
fridge.addFood({
|
||||
title: "варенье",
|
||||
calories: 150
|
||||
});
|
||||
|
||||
var dietItems = fridge.filterFood(function(item) {
|
||||
return item.calories < 50;
|
||||
});
|
||||
|
||||
fridge.removeFood("нет такой еды"); // без эффекта
|
||||
alert(fridge.getFood().length); // 4
|
||||
alert( fridge.getFood().length ); // 4
|
||||
|
||||
dietItems.forEach(function(item) {
|
||||
alert(item.title); // сок, зелень
|
||||
alert( item.title ); // сок, зелень
|
||||
fridge.removeFood(item);
|
||||
});
|
||||
|
||||
alert(fridge.getFood().length); // 2
|
||||
alert( fridge.getFood().length ); // 2
|
||||
```
|
||||
|
||||
|
|
|
@ -11,26 +11,38 @@
|
|||
Код для проверки:
|
||||
|
||||
```js
|
||||
var fridge = new Fridge(500);
|
||||
var fridge = new Fridge(500);
|
||||
fridge.enable();
|
||||
fridge.addFood({ title: "котлета", calories: 100 });
|
||||
fridge.addFood({ title: "сок", calories: 30 });
|
||||
fridge.addFood({ title: "зелень", calories: 10 });
|
||||
fridge.addFood({ title: "варенье", calories: 150 });
|
||||
fridge.addFood({
|
||||
title: "котлета",
|
||||
calories: 100
|
||||
});
|
||||
fridge.addFood({
|
||||
title: "сок",
|
||||
calories: 30
|
||||
});
|
||||
fridge.addFood({
|
||||
title: "зелень",
|
||||
calories: 10
|
||||
});
|
||||
fridge.addFood({
|
||||
title: "варенье",
|
||||
calories: 150
|
||||
});
|
||||
|
||||
fridge.removeFood("нет такой еды"); // без эффекта
|
||||
alert(fridge.getFood().length); // 4
|
||||
alert( fridge.getFood().length ); // 4
|
||||
|
||||
var dietItems = fridge.filterFood(function(item) {
|
||||
return item.calories < 50;
|
||||
});
|
||||
|
||||
dietItems.forEach(function(item) {
|
||||
alert(item.title); // сок, зелень
|
||||
alert( item.title ); // сок, зелень
|
||||
fridge.removeFood(item);
|
||||
});
|
||||
|
||||
alert(fridge.getFood().length); // 2
|
||||
alert( fridge.getFood().length ); // 2
|
||||
```
|
||||
|
||||
В качестве исходного кода используйте решение [предыдущей задачи](/task/inherit-fridge).
|
||||
|
|
|
@ -29,15 +29,15 @@ function Fridge(power) {
|
|||
if (food.length + arguments.length >= this._power / 100) {
|
||||
throw new Error("Нельзя добавить, не хватает мощности");
|
||||
}
|
||||
for(var i=0; i<arguments.length; i++) {
|
||||
food.push(arguments[i]); // добавить всё из arguments
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
food.push(arguments[i]); // добавить всё из arguments
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
this.getFood = function() {
|
||||
// копируем еду в новый массив, чтобы манипуляции с ним не меняли food
|
||||
return food.slice();
|
||||
return food.slice();
|
||||
};
|
||||
|
||||
this.filterFood = function(filter) {
|
||||
|
@ -60,7 +60,7 @@ function Fridge(power) {
|
|||
*/!*
|
||||
}
|
||||
|
||||
var fridge = new Fridge(500);
|
||||
var fridge = new Fridge(500);
|
||||
fridge.enable();
|
||||
fridge.addFood("кус-кус");
|
||||
fridge.disable(); // ошибка, в холодильнике есть еда
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
Код для проверки:
|
||||
|
||||
```js
|
||||
var fridge = new Fridge(500);
|
||||
var fridge = new Fridge(500);
|
||||
fridge.enable();
|
||||
fridge.addFood("кус-кус");
|
||||
fridge.disable(); // ошибка, в холодильнике есть еда
|
||||
|
|
|
@ -105,7 +105,7 @@ function CoffeeMachine(power) {
|
|||
|
||||
*!*
|
||||
// ошибка, переменная не определена!
|
||||
alert(enabled);
|
||||
alert( enabled );
|
||||
*/!*
|
||||
}
|
||||
|
||||
|
@ -140,7 +140,7 @@ function CoffeeMachine(power) {
|
|||
this.enable();
|
||||
|
||||
*!*
|
||||
alert(this._enabled); // true
|
||||
alert( this._enabled ); // true
|
||||
*/!*
|
||||
}
|
||||
|
||||
|
@ -178,8 +178,8 @@ function CoffeeMachine(power) {
|
|||
Machine.apply(this, arguments); // (2)
|
||||
*/!*
|
||||
|
||||
alert(this._enabled); // false
|
||||
alert(this._power); // 10000
|
||||
alert( this._enabled ); // false
|
||||
alert( this._power ); // 10000
|
||||
}
|
||||
|
||||
var coffeeMachine = new CoffeeMachine(10000);
|
||||
|
@ -204,8 +204,8 @@ var coffeeMachine = new CoffeeMachine(10000);
|
|||
// которые в Machine не будут использованы
|
||||
function Fridge(power, temperature) {
|
||||
Machine.apply(this, arguments);
|
||||
|
||||
// ...
|
||||
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -216,11 +216,11 @@ function Fridge(power, temperature) {
|
|||
```js
|
||||
function CoffeeMachine(power, capacity) {
|
||||
Machine.apply(this, arguments);
|
||||
|
||||
// переопределить this.enable
|
||||
this.enable = function() {
|
||||
/* enable для кофеварки */
|
||||
};
|
||||
|
||||
// переопределить this.enable
|
||||
this.enable = function() {
|
||||
/* enable для кофеварки */
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -234,10 +234,10 @@ function CoffeeMachine(power) {
|
|||
|
||||
*!*
|
||||
var parentEnable = this.enable; // (1)
|
||||
this.enable = function() { // (2)
|
||||
parentEnable.call(this); // (3)
|
||||
this.run(); // (4)
|
||||
}
|
||||
this.enable = function() { // (2)
|
||||
parentEnable.call(this); // (3)
|
||||
this.run(); // (4)
|
||||
}
|
||||
*/!*
|
||||
|
||||
...
|
||||
|
@ -265,13 +265,13 @@ function Machine(power) {
|
|||
this._enabled = false;
|
||||
|
||||
*!*
|
||||
var self = this;
|
||||
var self = this;
|
||||
*/!*
|
||||
|
||||
this.enable = function() {
|
||||
*!*
|
||||
// используем внешнюю переменную вместо this
|
||||
self._enabled = true;
|
||||
self._enabled = true;
|
||||
*/!*
|
||||
};
|
||||
|
||||
|
@ -293,13 +293,13 @@ function CoffeeMachine(power) {
|
|||
*!*
|
||||
var parentEnable = this.enable;
|
||||
this.enable = function() {
|
||||
parentEnable(); // теперь можно вызывать как угодно, this не важен
|
||||
this.run();
|
||||
}
|
||||
parentEnable(); // теперь можно вызывать как угодно, this не важен
|
||||
this.run();
|
||||
}
|
||||
*/!*
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готово!');
|
||||
alert( 'Кофе готово!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
@ -327,7 +327,7 @@ coffeeMachine.enable();
|
|||
```js
|
||||
function Machine(params) {
|
||||
// локальные переменные и функции доступны только внутри Machine
|
||||
var privateProperty;
|
||||
var privateProperty;
|
||||
|
||||
// публичные доступны снаружи
|
||||
this.publicProperty = ...;
|
||||
|
@ -348,7 +348,7 @@ machine.public();
|
|||
function CoffeeMachine(params) {
|
||||
// универсальный вызов с передачей любых аргументов
|
||||
*!*
|
||||
Machine.apply(this, arguments);
|
||||
Machine.apply(this, arguments);
|
||||
*/!*
|
||||
|
||||
this.coffeePublicProperty = ...
|
||||
|
@ -364,7 +364,7 @@ coffeeMachine.coffeePublicProperty();
|
|||
|
||||
```js
|
||||
function CoffeeMachine(params) {
|
||||
Machine.apply(this, arguments);
|
||||
Machine.apply(this, arguments);
|
||||
|
||||
*!*
|
||||
var parentProtected = this._protectedProperty;
|
||||
|
@ -383,7 +383,7 @@ function Machine(params) {
|
|||
var self = this;
|
||||
|
||||
this._protected = function() {
|
||||
self.property = "value";
|
||||
self.property = "value";
|
||||
};
|
||||
}
|
||||
```
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue