Coffeescriptの構造化と@キーワードの使用

これはおそらく非常に基本的なものですが、私は固執していて、ちょっと無礼です。

私は最近CoffeeScriptでスネークゲームを書いたが、私はすべてのことに満足していない。コードを構造化しました

私はクラスを使用してこれを書き直そうとしています。私はGameクラス、Snakeクラス、Foodクラスを持っています。このようにするのは私の頭の中で意味があります。しかし、変数や関数にアクセスするには、 '@'(this)キーワードを使用しています。私はそれを完全に過ぎているように感じます。たとえば、Gameクラスの最上部に定数のリストがあります。アクセスできるようにするには、すべてを @CONSTANT として宣言しなければなりませんでした。または、メソッドの内部:

clearCanvas: ->
    @ctx.clearRect 0, 0, @canvas.width, @canvas.height

同じことがメソッド呼び出しにも適用されます。例えば:

init: ->
    window.snake = new Snake()
    @showStartScreen()

誰かがこれが大丈夫かどうか、またはコードをどのように構造化すべきか教えていただけますか?誰かが私のためにそれを見直すために非常に親切であれば、私は現時点で作業しているコードにリンクを張ることができます。 (編集:実際はこちら

どうもありがとう。

2

2 答え

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()

また、@thejhは正しいです。 2スペース幅でソフトタブを使用する必要があります。

5
追加された
ねえ、編集を参照してください:)
追加された 著者 bloudermilk,
喜んでより助けること:)
追加された 著者 bloudermilk,
私は完全なコードへのリンクを張った。私は@を大量に使っています。これに代わるものはありますか、これは正常に動作する方法ですか?
追加された 著者 cabaret,
ああ、ありがとう。それらの前に '@'を付けて宣言しても、実際にはそれほど意味がありませんでした。私はそれらを削除した。コードはまだうまくいくようです。ありがとう!
追加された 著者 cabaret,

タブとは別に(代わりにスペースを使用する必要があります)、それは私にはうまく見えます。ああ、最後の行のセミコロンはそこにあるべきではありません。 :)

2
追加された
ああ。セミコロンには記入されておらず、明らかに何らかの理由でTextMateのソフトタブが消えてしまった。それを指摘してくれてありがとう;)
追加された 著者 cabaret,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript