3
class Foo 
  foo: () ->
    console.log("foo method Called")

class Bar extends Foo
  constructor: () ->
    console.log("Bar created")

  bar: () ->
    console.log("bar method called")
    foo

b = new Bar
b.bar()

結果:バーは ReferenceError と呼ばれるバー メソッドを
作成しました: foo は定義されていません


foo メソッドを呼び出すにはどうすればよいですか?

4

2 に答える 2

4

ここには 2 つの問題があります。

this.fooまず、 (または)に電話する必要があります@foo

次に、CoffeScript では、関数定義で言及された最後の変数が返されますが、実行されません。したがって、その関数を呼び出したい場合、コードは次のようにする必要があります。

bar: () ->
    console.log("bar method called")
    this.foo() // or @foo()

それ以外の場合()は、関数を呼び出すのではなく、関数を返します。これも にコンパイルされることに注意してくださいreturn this.foo()。したがって、何も返したくない場合はreturn、最後の行に空白を追加してください。

于 2013-05-16T16:52:40.140 に答える
0

を使用し@foo()ます。functionsクラスで宣言されたものは、クラスのprototype. ここのコードによって生成された JavaScript を見てください。

関数プロトタイプに直接追加された関数を呼び出すには、this.

于 2013-05-16T17:01:49.890 に答える