ZdraviiSmisl
@ZdraviiSmisl

Почему код не выдаёт ошибку?

При переопределении метода родителя dicable,код должен выдавать ошибку если в холодильнике есть еда. Можно было бы в в if записать просто (food.length) но я решил через indexOf. И ничего не происходит.

"use strict";

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);
  };
   
  this.parentDisable = this._disable;
this._disable = function(item){
parentDisable();
var idx = food.indexOf(item);
    if (idx != -1){
throw new Error("В холодильнике есть еда");
}
};


}

var fridge = new Fridge(500);
fridge.enable();
fridge.addFood("кус-кус");
fridge.disable();
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
В родителе есть и вызываете вы метод disable(), а в холодильнике пишите _disable().
В холодильнике вы принимаете аргумент item, но не передаёте его при вызове.
Проверять по логике нужно, конечно, через food.length, а не через indexOf.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
24 нояб. 2024, в 14:37
3000 руб./в час
24 нояб. 2024, в 13:04
500 руб./в час
24 нояб. 2024, в 12:29
3000 руб./за проект