我想在 if 语句中使用 @Type
,但它似乎无法识别 @Type
。有没有办法获取 @Type
以便我可以在父类(super class)中使用它?
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"
最佳答案
这并不能回答您的问题(如何使子类属性对父类可见),但它应该以易于扩展的方式产生相同的结果。您可以添加更多子类,而无需每次都返回并更改对手
。
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 = Math.ceil(@Level * 1.25)
@attackDamage = 0
# ...
class Snake extends opponent
constructor : (ID, Level, Name) ->
# use parent constructor to create the object
# and then customize the values for this class
super
@Luck = Math.ceil(@Level * 1.25) + 5
关于javascript - 如何访问 Coffeescript 扩展类中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868802/