1

CoffeeScript クラスのコンストラクターに値を渡そうとしていますが、成功していません。

class A

  constructor: () ->

    @b = new B('FOO')


class B

  constructor: (@value) ->

  printValue: () =>
    console.log @value


B のインスタンスから printValue を呼び出すと、「未定義」がコンソールに記録されます。「FOO」がログに記録されないのはなぜですか?

アップデート

次のように、クラス A のインスタンスが 3 番目のクラス C で作成されることに言及する必要がありました。

class C

  constructor: () ->

    @a = new A()


3 つのクラスはすべて別のファイルにあり、C の上、A の上、C の上という順序で結合されています。

4

1 に答える 1

2

私がこれを行うと、うまくいきます:

class B
  constructor: (@value) ->
  printValue: () -> alert @value

b = new B "foo"
b.printValue()

空白のインデントの問題が発生していると推測しています。CoffeeScript は空白の影響を受けやすいため、同じブロック内でタブと間隔を一致させる必要があります。

http://coffeescript.org/にアクセスして、「Try Coffeescript」を選択します。貼り付けて「実行」を押します。

または、問題が見られないため、この問題を示す JSFiddle を作成することを検討してください。

于 2013-02-24T13:39:41.160 に答える