我最近开始使用Coffeescript,但我对课程不太了解。我尝试在Coffeescript.org上使用教程,结果如下:
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}都能正常工作吗?超级只引用父类中同名的方法吗?
发布于 2016-05-11 08:16:13
我没有将此作为评论添加的因果报应,所以我将其添加为答案。以下是您可能需要注意的几件事:
关键字是extends,而不只是extend.
$itemsBox和$useItemSelection全局变量?
@foo语法的方法(构造函数除外)都应该用“
=>声明。@foo等同于this.foo,并且=>版本是唯一一个将this绑定到正确对象(您的类的特定实例)的版本。
class UsableItem而不是class usableItem,但这只是个人喜好的问题。<代码>G221
除此之外,我认为你的代码看起来可以工作。
请注意,如果您只想执行语法检查,或者查看为一小段CoffeeScript生成的JavaScript,您可以转到http://coffeescript.org/并单击"Try CoffeeScript“选项卡。
https://stackoverflow.com/questions/21713592
复制相似问题