为什么所有实例都具有相同的健康状况,即使对象生成随机健康

时间:2015-10-02 18:52:43

标签: javascript oop instance

我正在尝试解决学生的Javascript代码问题。目前它看起来像这样:

mvn package

当我调用alien1.hp时它等于61而alien2.hp它也等于61.这是为什么?如何更改它,以便每个Alien实例的健康状况都不同。在此先感谢!!

2 个答案:

答案 0 :(得分:4)

因为您只有一个Alien,所以您只需拨打一次RNG。你可能也希望Alien成为它自己的东西,而不是使用Object构造函数。

function Alien() { 
  this.hp = Math.floor(Math.random() * 100);
}

> a1 = new Alien();
=> Alien {hp: 13}
> a2 = new Alien();
=> Alien {hp: 42}

这允许您向外星人的原型等添加方法,例如,

function Alien(name) {
  this.name = name;
  this.hp   = Math.floor(Math.random() * 100);
}

Alien.prototype.toString = function() {
  return 'Alien "' + this.name + '", HP: ' + this.hp;
}

tom = new Alien('Tom');
console.log("" + tom);
=> Alien "Tom", HP: 13

答案 1 :(得分:0)

您将始终只有一个Alien具有相同的值,我建议使用一个函数:

function Alien() {
    return { hp: Math.floor(Math.random()*100) };
};

var alien1 = new Object(Alien());
var alien2 = new Object(Alien());

这样,Alien函数每次调用时都会返回一个不同的随机hp对象。