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

结果:
Bar 创建了
名为
ReferenceError 的 bar 方法:未定义 foo

如何调用 foo 方法?

4

2 回答 2

4

这里有两个问题。

首先,您需要调用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 回答