2014-11-06 67 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