我正在尝试对学生的Javascript代码进行故障排除。当前看起来像这样:
var Alien = {
hp: Math.floor(Math.random()*100)
}
var alien1 = new Object(Alien);
var alien2 = new Object(Alien);
当我叫Alien1.hp等于61时,Alien2.hp也等于61。为什么?我如何更改它,以便每个Alien实例的运行状况都不同。提前致谢!!
最佳答案
因为只有一个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}
这样,您便可以将方法添加到Alien的原型中,例如,
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
关于javascript - 为什么所有实例都具有相同的运行状况,即使对象生成随机运行状况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32913962/