beautify 1st part of the tutorial
This commit is contained in:
parent
e3dd2cedc0
commit
6444024a9d
327 changed files with 2358 additions and 1986 deletions
|
@ -25,13 +25,13 @@
|
|||
function User(name) {
|
||||
|
||||
this.sayHi = function() {
|
||||
alert("Привет, я " + name);
|
||||
alert( "Привет, я " + name );
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
var vasya = new User("Вася"); // создали пользователя
|
||||
vasya.sayHi(); // пользователь умеет говорить "Привет"
|
||||
vasya.sayHi(); // пользователь умеет говорить "Привет"
|
||||
```
|
||||
|
||||
Здесь мы видим ярко выраженную сущность -- `User` (посетитель). Используя терминологию ООП, такие конструкторы часто называют *классами*, то есть можно сказать "класс `User`".
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
function CoffeeMachine(power) {
|
||||
this.waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
*!*
|
||||
var timerId;
|
||||
*/!*
|
||||
|
@ -16,7 +16,7 @@ function CoffeeMachine(power) {
|
|||
}
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готово!');
|
||||
alert( 'Кофе готово!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
function CoffeeMachine(power) {
|
||||
this.waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
var self = this;
|
||||
|
||||
|
@ -17,7 +17,7 @@ function CoffeeMachine(power) {
|
|||
}
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готово!');
|
||||
alert( 'Кофе готово!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
@ -32,7 +32,7 @@ function CoffeeMachine(power) {
|
|||
```js
|
||||
var coffeeMachine = new CoffeeMachine(50000);
|
||||
coffeeMachine.waterAmount = 200;
|
||||
|
||||
|
||||
coffeeMachine.run();
|
||||
coffeeMachine.stop(); // кофе приготовлен не будет
|
||||
```
|
||||
|
|
|
@ -60,8 +60,8 @@
|
|||
//+ run
|
||||
function CoffeeMachine(power) {
|
||||
this.waterAmount = 0; // количество воды в кофеварке
|
||||
|
||||
alert('Создана кофеварка мощностью: ' + power + ' ватт');
|
||||
|
||||
alert( 'Создана кофеварка мощностью: ' + power + ' ватт' );
|
||||
}
|
||||
|
||||
// создать кофеварку
|
||||
|
@ -107,10 +107,10 @@ function CoffeeMachine(power) {
|
|||
function getBoilTime() {
|
||||
return 1000; // точная формула расчета будет позже
|
||||
}
|
||||
|
||||
|
||||
// что делать по окончании процесса
|
||||
function onReady() {
|
||||
alert('Кофе готово!');
|
||||
alert( 'Кофе готово!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
@ -153,21 +153,21 @@ function CoffeeMachine(power) {
|
|||
|
||||
*!*
|
||||
// физическая константа - удельная теплоёмкость воды для getBoilTime
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
// расчёт времени для кипячения
|
||||
function getBoilTime() {
|
||||
return this.waterAmount * WATER_HEAT_CAPACITY * 80 / power; // ошибка!
|
||||
}
|
||||
return this.waterAmount * WATER_HEAT_CAPACITY * 80 / power; // ошибка!
|
||||
}
|
||||
*/!*
|
||||
|
||||
// что делать по окончании процесса
|
||||
function onReady() {
|
||||
alert('Кофе готово!');
|
||||
alert( 'Кофе готово!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
setTimeout(onReady, getBoilTime());
|
||||
setTimeout(onReady, getBoilTime());
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -192,14 +192,14 @@ coffeeMachine.run();
|
|||
//+ run
|
||||
function CoffeeMachine(power) {
|
||||
this.waterAmount = 0;
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
function getBoilTime() {
|
||||
return this.waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готово!');
|
||||
alert( 'Кофе готово!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
@ -230,7 +230,7 @@ coffeeMachine.run();
|
|||
function CoffeeMachine(power) {
|
||||
this.waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
*!*
|
||||
var getBoilTime = function() {
|
||||
|
@ -239,7 +239,7 @@ function CoffeeMachine(power) {
|
|||
*/!*
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готово!');
|
||||
alert( 'Кофе готово!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
@ -269,18 +269,18 @@ coffeeMachine.run();
|
|||
function CoffeeMachine(power) {
|
||||
this.waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
*!*
|
||||
var self = this;
|
||||
|
||||
function getBoilTime() {
|
||||
return self.waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
return self.waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
*/!*
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готово!');
|
||||
alert( 'Кофе готово!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
```js
|
||||
//+ run
|
||||
function User() {
|
||||
|
||||
|
||||
var firstName, surName;
|
||||
|
||||
this.setFirstName = function(newFirstName) {
|
||||
|
|
|
@ -6,6 +6,7 @@ function CoffeeMachine(power, capacity) {
|
|||
var waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
function getTimeToBoil() {
|
||||
return waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
|
@ -28,7 +29,7 @@ function CoffeeMachine(power, capacity) {
|
|||
*/!*
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готов!');
|
||||
alert( 'Кофе готов!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
|
|
@ -13,6 +13,7 @@ function CoffeeMachine(power, capacity) {
|
|||
var waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
function getTimeToBoil() {
|
||||
return waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
|
@ -29,7 +30,7 @@ function CoffeeMachine(power, capacity) {
|
|||
};
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готов!');
|
||||
alert( 'Кофе готов!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
|
|
@ -6,6 +6,7 @@ function CoffeeMachine(power, capacity) {
|
|||
var waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
function getTimeToBoil() {
|
||||
return waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
|
@ -20,7 +21,7 @@ function CoffeeMachine(power, capacity) {
|
|||
};
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готов!');
|
||||
alert( 'Кофе готов!' );
|
||||
}
|
||||
|
||||
*!*
|
||||
|
@ -31,7 +32,9 @@ function CoffeeMachine(power, capacity) {
|
|||
|
||||
this.run = function() {
|
||||
*!*
|
||||
setTimeout(function() { onReady(); }, getTimeToBoil());
|
||||
setTimeout(function() {
|
||||
onReady();
|
||||
}, getTimeToBoil());
|
||||
*/!*
|
||||
};
|
||||
|
||||
|
@ -44,8 +47,8 @@ coffeeMachine.run();
|
|||
|
||||
*!*
|
||||
coffeeMachine.setOnReady(function() {
|
||||
var amount = coffeeMachine.getWaterAmount();
|
||||
alert('Готов кофе: ' + amount + 'мл'); // Готов кофе: 150 мл
|
||||
var amount = coffeeMachine.getWaterAmount();
|
||||
alert( 'Готов кофе: ' + amount + 'мл' ); // Готов кофе: 150 мл
|
||||
});
|
||||
*/!*
|
||||
```
|
||||
|
|
|
@ -11,6 +11,7 @@ function CoffeeMachine(power, capacity) {
|
|||
var waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
function getTimeToBoil() {
|
||||
return waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
|
@ -26,8 +27,8 @@ function CoffeeMachine(power, capacity) {
|
|||
|
||||
*!*
|
||||
function onReady() {
|
||||
alert('Кофе готов!');
|
||||
}
|
||||
alert( 'Кофе готов!' );
|
||||
}
|
||||
*/!*
|
||||
|
||||
this.run = function() {
|
||||
|
@ -45,8 +46,8 @@ coffeeMachine.setWaterAmount(150);
|
|||
|
||||
*!*
|
||||
coffeeMachine.setOnReady(function() {
|
||||
var amount = coffeeMachine.getWaterAmount();
|
||||
alert('Готов кофе: ' + amount + 'мл'); // Кофе готов: 150 мл
|
||||
var amount = coffeeMachine.getWaterAmount();
|
||||
alert( 'Готов кофе: ' + amount + 'мл' ); // Кофе готов: 150 мл
|
||||
});
|
||||
*/!*
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ function CoffeeMachine(power, capacity) {
|
|||
*/!*
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
function getTimeToBoil() {
|
||||
return waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
|
@ -28,7 +29,7 @@ function CoffeeMachine(power, capacity) {
|
|||
};
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готов!');
|
||||
alert( 'Кофе готов!' );
|
||||
}
|
||||
|
||||
this.setOnReady = function(newOnReady) {
|
||||
|
@ -38,7 +39,7 @@ function CoffeeMachine(power, capacity) {
|
|||
this.run = function() {
|
||||
*!*
|
||||
timerId = setTimeout(function() {
|
||||
timerId = null;
|
||||
timerId = null;
|
||||
onReady();
|
||||
}, getTimeToBoil());
|
||||
};
|
||||
|
@ -49,13 +50,13 @@ function CoffeeMachine(power, capacity) {
|
|||
var coffeeMachine = new CoffeeMachine(20000, 500);
|
||||
coffeeMachine.setWaterAmount(100);
|
||||
|
||||
alert('До: ' + coffeeMachine.isRunning()); // До: false
|
||||
alert( 'До: ' + coffeeMachine.isRunning() ); // До: false
|
||||
|
||||
coffeeMachine.run();
|
||||
alert('В процессе: ' + coffeeMachine.isRunning()); // В процессе: true
|
||||
alert( 'В процессе: ' + coffeeMachine.isRunning() ); // В процессе: true
|
||||
|
||||
coffeeMachine.setOnReady(function() {
|
||||
alert("После: " + coffeeMachine.isRunning()); // После: false
|
||||
alert( "После: " + coffeeMachine.isRunning() ); // После: false
|
||||
});
|
||||
```
|
||||
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
var coffeeMachine = new CoffeeMachine(20000, 500);
|
||||
coffeeMachine.setWaterAmount(100);
|
||||
|
||||
alert('До: ' + coffeeMachine.isRunning()); // До: false
|
||||
alert( 'До: ' + coffeeMachine.isRunning() ); // До: false
|
||||
|
||||
coffeeMachine.run();
|
||||
alert('В процессе: ' + coffeeMachine.isRunning()); // В процессе: true
|
||||
alert( 'В процессе: ' + coffeeMachine.isRunning() ); // В процессе: true
|
||||
|
||||
coffeeMachine.setOnReady(function() {
|
||||
alert("После: " + coffeeMachine.isRunning()); // После: false
|
||||
alert( "После: " + coffeeMachine.isRunning() ); // После: false
|
||||
});
|
||||
```
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@ function CoffeeMachine(power, capacity) { // capacity - ёмкость кофе
|
|||
var waterAmount = 0;
|
||||
|
||||
var WATER_HEAT_CAPACITY = 4200;
|
||||
|
||||
function getTimeToBoil() {
|
||||
return waterAmount * WATER_HEAT_CAPACITY * 80 / power;
|
||||
}
|
||||
|
@ -64,7 +65,7 @@ function CoffeeMachine(power, capacity) { // capacity - ёмкость кофе
|
|||
*/!*
|
||||
|
||||
function onReady() {
|
||||
alert('Кофе готов!');
|
||||
alert( 'Кофе готов!' );
|
||||
}
|
||||
|
||||
this.run = function() {
|
||||
|
@ -106,7 +107,7 @@ function CoffeeMachine(power, capacity) {
|
|||
}
|
||||
|
||||
var coffeeMachine = new CoffeeMachine(1000, 500);
|
||||
coffeeMachine.setWaterAmount(450);
|
||||
coffeeMachine.setWaterAmount(450);
|
||||
alert( coffeeMachine.getWaterAmount() ); // 450
|
||||
```
|
||||
|
||||
|
@ -146,7 +147,7 @@ var coffeeMachine = new CoffeeMachine(1000, 500);
|
|||
|
||||
// пример использования
|
||||
*!*
|
||||
coffeeMachine.waterAmount(450);
|
||||
coffeeMachine.waterAmount(450);
|
||||
alert( coffeeMachine.waterAmount() ); // 450
|
||||
*/!*
|
||||
```
|
||||
|
|
|
@ -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