Добавьте методы в холодильник
важность: 5
Добавьте в холодильник методы:
- Публичный метод filterFood(func), который возвращает всю еду, для которойfunc(item) == true
- Публичный метод removeFood(item), который удаляет едуitemиз холодильника.
Код для проверки:
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.removeFood("нет такой еды"); // без эффекта
alert( fridge.getFood().length ); // 4
var dietItems = fridge.filterFood(function(item) {
  return item.calories < 50;
});
dietItems.forEach(function(item) {
  alert( item.title ); // сок, зелень
  fridge.removeFood(item);
});
alert( fridge.getFood().length ); // 2В качестве исходного кода используйте решение предыдущей задачи.
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 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
});
var dietItems = fridge.filterFood(function(item) {
  return item.calories < 50;
});
fridge.removeFood("нет такой еды"); // без эффекта
alert( fridge.getFood().length ); // 4
dietItems.forEach(function(item) {
  alert( item.title ); // сок, зелень
  fridge.removeFood(item);
});
alert( fridge.getFood().length ); // 2