Проблема с методом «каждый» в функции прототипа - PullRequest
0 голосов
/ 30 января 2019

Я столкнулся со следующей проблемой: метод every в моей функции возвращает undefined, поэтому функция ableToMoveAll возвращается независимо от того, что.Пожалуйста, посмотрите на следующий фрагмент кода и помогите мне с ним:

var SQUADS = [];

function MilitaryUnit(name, maxHealth, maxEnergy){
    this.squadName = name;
    this.squadMaxHealth = maxHealth;
    this.squadCurrentHealth = maxHealth;
    this.squadMaxEnergy = maxEnergy;
    this.squadCurrentEnergy = maxEnergy;

    this.travel = function(dist){
        if (dist > this.squadCurrentEnergy) {
            alert("You can't go this far");
        }
        this.squadCurrentEnergy -= dist;
    }
    this.ableToMove = function(dist){
        return this.squadCurrentEnergy >= dist;
    }
}

var squadOfHorses = new MilitaryUnit("Horses", 50, 100);
SQUADS.push(squadOfHorses);
var squadOfSoldiers = new MilitaryUnit("Soldiers", 40, 50);
SQUADS.push(squadOfSoldiers);
var squadOfMachines = new MilitaryUnit("Machines", 100, 50);
SQUADS.push(squadOfMachines);

Array.prototype.ableToMoveAll = function(dist){
    return this.every(function(el){
        el.ableToMove(dist)
    });
}

Заранее спасибо)

1 Ответ

0 голосов
/ 30 января 2019

Не метод every возвращает undefined, но обратный вызов, который вы ему передали.Вы забыли заявление return:

return this.every(function(el){
    return el.ableToMove(dist)
//  ^^^^^^
});
...