构建Coffeescript并使用@关键字

cab*_*ret 2 javascript this project-structuring coffeescript

这可能是非常基本的东西,但我卡住了,有点无能为力.

我最近在CoffeeScript中写了一个Snake游戏,但我对构建代码的方式并不满意.

我正在尝试使用类重写它.我有一个Game类,一个Snake类,一个Food类.我这样做是有意义的.但是,要访问变量和函数,我使用'@'(this)关键字,我觉得我完全过度了.例如,我在Game类的顶部有一个常量列表.我必须声明所有这些@CONSTANT都能够访问它们.或者,在方法内:

clearCanvas: ->
    @ctx.clearRect 0, 0, @canvas.width, @canvas.height
Run Code Online (Sandbox Code Playgroud)

方法调用也是如此.例如:

init: ->
    window.snake = new Snake()
    @showStartScreen()
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这是否可行,或者我应该如何构建我的代码?我现在可以链接到我正在使用的代码,如果有人愿意为我审查它.(编辑:实际上在这里)

非常感谢.

blo*_*ilk 5

如果您正在使用CoffeeScript类,那么您将大量使用它@.必须通过@或访问对象上的任何属性this.以下是您应该如何使用常量:

class Game
  up:     1
  right:  2
  down:   4
  left:   8

  someMethod: ->
    console.log @up, @right, @down, @left

console.log "Class accessible #{Game::up}"

g = new Game
console.log "Object accessinble #{g.up}"

g.someMethod()
Run Code Online (Sandbox Code Playgroud)

另外,@ thejh是对的.您应该使用2个空格宽度的软标签.