javascript - 如何访问 Coffeescript 扩展类中的属性?

标签 javascript class if-statement coffeescript extends

我想在 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/

相关文章:

javascript - jquery 验证消息未显示

python - 如何将类对象的所有方法的结果作为一个列表返回?

Python if-elif-else 运行时优化

javascript - RSS 到 JSON、YQL

Javascript For Loop 不断加倍我的 div

javascript - ng-repeat 按 $index 跟踪并从数组中删除元素

java - 我如何将方法导入到我的所有项目(如标准)?

javascript - jQuery - 检查元素是否具有数组中的类?

ios - Objective C - 编写 if 语句的更好方法

java - 将队列顶部与数组列表元素进行比较