2014-11-06 82 views
0

我对JS非常陌生。定义变量的属性

我想定义一个变量的属性,但诀窍是,我希望JS定义一个新的变量,同时定义另一个。

这不起作用:

var robber = { 
     health: 10, 
     halfHealth: this.health/2, 
}; 

我希望robber.halfHealth为5,但答案是NaN。我猜这是因为var robber没有真正定义的时间尝试计算halfHealth完成?

如果我把它的另一种方式,它的工作原理:

var robber = { 
     health: 10, 
     // halfHealth: this.health/2, 
}; 

var robberHalfHealth = robber.health/2; 

我不希望有数百个变量,而是希望所有的变量与“强盗”住{在一个房子},所以说。

P.S.其中一种方法可能是添加定义为halfHealthrobber.init()的函数,但有没有更直接的解决方案?

+0

而是在你的第二个版本的声明第二个变量的,你可以说'robber.halfHealth = robber.health/2;'创建后的第二属性添加到'robber'。 – nnnnnn 2014-11-06 13:38:06

回答

1

为什么不使用函数?

var robber = { health: 10, halfHealth: function(){return this.health/2;} } 
robber.halfHealth(); // 5 
+1

请注意,这并不具有相同的结果,因为函数总是会返回当前“健康”值的一半。如果这个想法能够判断一个可改变的“健康”是否已经降到原始值的一半以下,那么这是行不通的。 – nnnnnn 2014-11-06 13:40:58

+0

这是真的,但如果检查这是一个要求 - 我也会使用一个函数,然后命名health => originalHealth/maxHealth,并有另一个属性来存储当前的健康状况 – AlexanderBrevig 2014-11-06 13:48:20