原型函数中"每个"方法的问题

Lio*_*ing 0 javascript constructor prototype

我遇到了以下问题: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)
    });
}
Run Code Online (Sandbox Code Playgroud)

先感谢您)

Ber*_*rgi 6

不是every方法返回undefined,而是您传递给它的回调.你忘了这return句话:

return this.every(function(el){
    return el.ableToMove(dist)
//  ^^^^^^
});
Run Code Online (Sandbox Code Playgroud)