首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coffeescript类

Coffeescript类
EN

Stack Overflow用户
提问于 2014-02-12 05:38:52
回答 1查看 187关注 0票数 0

我最近开始使用Coffeescript,但我对课程不太了解。我尝试在Coffeescript.org上使用教程,结果如下:

代码语言:javascript
复制
class Item
    constructor: (@name, @description) ->

    add: () ->
        $itemsBox.append("<p class='center item #{@name}'>#{@name}</p>")

    remove: () ->
        $itemsBox.remove($("##{@name}"))

class permanentItem extend Item 


    add: () ->
        super()

    remove: () ->
        super()

class permanentUsableItem extend Item
    @used: false
    @active: true

    add: () ->
        super()
        $useItemSelection.append("<option value='#{@name}'>#{@name}</option>")

    remove: () ->
        $("#useItemSelection option[value='#{@name}']").remove()

class usableItem extend Item
    @numberHeld: 0
    @active: false

    add: () ->
        $itemsBox.append("<p class='center item #{@name}'>#{@name} x#{@numberHeld}</p>")
        $useItemSelection.append("<option value='#{@name}'>#{@name}</option>")

    remove: () ->
        if @numberHeld is 0
            super()
            $("#useItemSelection option[value='#{@name}']").remove()
        else 
            @numberHeld -= 1

有没有人能告诉我这是不是正确的,所有的#{@name}都能正常工作吗?超级只引用父类中同名的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-11 08:16:13

我没有将此作为评论添加的因果报应,所以我将其添加为答案。以下是您可能需要注意的几件事:

关键字是extends,而不只是extend.

  • Are $itemsBox$useItemSelection全局变量?

  • 任何使用@foo语法的方法(构造函数除外)都应该用“

  • =>声明。@foo等同于this.foo,并且=>版本是唯一一个将this绑定到正确对象(您的类的特定实例)的版本。

  • 我认为约定是使用CamelCaseWithALeadingCapital作为类名,因此您应该使用class UsableItem而不是class usableItem,但这只是个人喜好的问题。

<代码>G221

除此之外,我认为你的代码看起来可以工作。

请注意,如果您只想执行语法检查,或者查看为一小段CoffeeScript生成的JavaScript,您可以转到http://coffeescript.org/并单击"Try CoffeeScript“选项卡。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21713592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档