Что делают данные строки кода в задаче? Здравствуйте! Помогите пожалуйста понять код
Задание (взято из учебника):
Переопределите метод disable холодильника, чтобы при наличии в нём еды он выдавал ошибку.
Объясните пожалуйста значение этих строк кода в задаче
В честности
1)
Играет ли какую-то роль в конструкторе Machine этот код ?
this.disable = function() {
self._enabled = false;
};
2)
Для чего нужен var parentDisable = this.disable; и его вызов parentDisable();function Machine(power) {
this._power = power;
this._enabled = false;

var self = this;

this.enable = function() {
self._enabled = true;
};

this.disable = function() {
self._enabled = false;
};
}

function Fridge(power) {
Machine.apply(this, arguments);

var food = []; // приватное свойство food

this.addFood = function() {
if (!this._enabled) {
throw new Error("Холодильник выключен");
}
if (food.length + arguments.length >= this._power / 100) {
throw new Error("Нельзя добавить, не хватает мощности");
}
for (var i = 0; i < arguments.length; i++) {
food.push(arguments[i]); // добавить всё из arguments
}

};

this.getFood = function() {
// копируем еду в новый массив, чтобы манипуляции с ним не меняли food
return food.slice();
};

this.filterFood = function(filter) {
return food.filter(filter);
};

this.removeFood = function(item) {
var idx = food.indexOf(item);
if (idx != -1) food.splice(idx, 1);
};

var parentDisable = this.disable;
this.disable = function() {
if (food.length) {
throw new Error("Нельзя выключить: внутри еда");
}
parentDisable();
};
}

var fridge = new Fridge(500);
fridge.enable();
fridge.addFood("кус-кус");
fridge.disable(); // ошибка, в холодильнике есть еда

21 Авг 2019 в 07:00
175 +1
1
Ответы
1

1) В данном коде в конструкторе Machine метод disable переопределяется для холодильника. Вместо простого выключения холодильника, теперь он проверяет наличие еды в нем и выдает ошибку, если она есть.

2) Строка var parentDisable = this.disable; сохраняет оригинальный метод disable объекта Fridge (родительского класса), чтобы потом его можно было вызвать в переопределенном методе disable для проверки наличия еды. Вызов parentDisable(); внутри переопределенного метода позволяет сначала выполнить оригинальную функциональность disable, а затем добавить свою логику проверки на наличие еды.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир