Javascript 使用类对象循环时,随后重置
由于Js引用对象,我有点为难 我有一个Js“类”来创建一个新的玩家。这个类有几个不同的变量、字符串和数组等,还有一些函数用于检查与这些变量有关的某些事情 我正在做一个while循环(当一个玩家被宣告死亡时结束),循环完成后,我想“重置”实例化的类,以便再次运行循环(嵌套的while循环) e、 g 希望这是有意义的 以前我使用了类似于Javascript 使用类对象循环时,随后重置,javascript,Javascript,由于Js引用对象,我有点为难 我有一个Js“类”来创建一个新的玩家。这个类有几个不同的变量、字符串和数组等,还有一些函数用于检查与这些变量有关的某些事情 我正在做一个while循环(当一个玩家被宣告死亡时结束),循环完成后,我想“重置”实例化的类,以便再次运行循环(嵌套的while循环) e、 g 希望这是有意义的 以前我使用了类似于JSON.parse(JSON.stringify(player1))的东西来制作对象的副本,但现在我的对象(类)中有一些方法,所以这不起作用。所以正如我所评论的,
JSON.parse(JSON.stringify(player1))
的东西来制作对象的副本,但现在我的对象(类)中有一些方法,所以这不起作用。所以正如我所评论的,这是一个很好的开始,在构建对象时,您基本上可以对其进行快照,并随时恢复
function resertPlayers() {
player1 = new Player('player1');
player2 = new Player('player2');
}
您可以编写如下代码:
function Player(name)
{
this.name = name;
this.hp = 100;
var initialState = {hp:100};
this.isnotdead = function()
{
return hp > 0;
}
this.restore = function(){
this.hp = initialState.hp;
}
}
要重置时,请调用
player1.restore()
。这假设在游戏之间存在不希望重置的其他属性。如果你没有,那么@Igor的答案是显而易见的(也是最好的)解决方案。展示玩家的类定义。你可能想看看while(player1.isnotdead | | player2.isnotdead)
-可能&
这是你想用英语说的:“他们都活着的时候。”这与“他们都没死的时候”相同这与“P1没有死,P2没有死”是一样的。所以你想要&&。您当前的代码将继续运行,直到它们都死掉。(如果P1是活的,或者P2是活的,它将继续运行。只有当它们都死了时,这才是错误的。)除此之外,我认为你的方法应该去掉负数<在布尔逻辑中使用code>isdead时,更容易使您的头脑清醒-它消除了可能的双重否定!isnotdead()
如果玩家在游戏中实际保持了分数,该怎么办?你只是重写了这个属性。@Jamiec-我看不懂OP的想法:),但我能读懂问题的内容——“但玩家1和玩家2的新变量”是真的,我只是陈述了显而易见的事实<代码>“重置”实例化的类而不是重新创建
是它们要求的。这确实是最明显的答案!他确实评论说,在战斗之后(…)他们中的一个会被杀,也就是说,生命值为0,所以维持生命值没有什么意义,我也看不到另一个得分场。是的,我必须弄清楚这一点。我不是一个粉丝,因为它是重复的代码,但就这样吧@Pablo先生没有必要复制任何代码,我展示了一个硬编码hp
的示例,但是如果您有许多属性需要重置,则无需复制任何内容即可完成
function Player(name)
{
this.name = name;
this.hp = 100;
var initialState = {hp:100};
this.isnotdead = function()
{
return hp > 0;
}
this.restore = function(){
this.hp = initialState.hp;
}
}