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)
先感谢您)
不是every方法返回undefined,而是您传递给它的回调.你忘了这return句话:
return this.every(function(el){
return el.ableToMove(dist)
// ^^^^^^
});
Run Code Online (Sandbox Code Playgroud)