【发布时间】:2014-02-19 00:57:21
【问题描述】:
我想在 if 语句中使用@Type,但它似乎无法识别@Type。有没有办法获得@Type 以便我可以在超类中使用它?
class opponent
constructor: (ID, Level, Name) ->
@ID = ID
@Level = Level
@Name = Name
@Health = if @Level is 1
@Level * 5
else if 2 <= @Level <= 4
(@Level * 6) - (@Level * 2)
@Luck = if @Type is "Snake"
Math.ceil(@Level * 1.25) + 5
else
Math.ceil(@Level * 1.25)
@attackDamage = 0
@defenseDoubled = false;
@Poisoned = false;
@Burned = false;
@Frozen = false;
@defend: ->
@Defense *= 2
@DefenseDoubled = true;
@undefend: ->
@Defense /= 2
@DefenseDoubled = false;
class Snake extends opponent
@Type: "Snake"
【问题讨论】:
-
为什么
Snake不设置@Health本身?父类不应该知道任何可能的扩展。 -
@hpaulj 我试图避免这种情况,因为我将制作更多从对手扩展的类,但我想这样做可能更容易
-
@Type: "Snake"行创建了一个(借用 Java 术语)静态变量。如果你希望它是非静态的,你可以使用Type: "Snake"。你不这样做有什么原因吗?
标签: javascript class if-statement coffeescript extends