Coffeescript - 如何调用父类的方法

时间:2013-05-16 16:40:17

标签: coffeescript

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:foo未定义

如何调用foo方法?

2 个答案:

答案 0 :(得分:4)

这里有两个问题。

首先,您需要致电this.foo(或@foo)。

其次,在CoffeScript中,返回函数定义中提到的最后一个变量,而不是执行。因此,如果您想调用该函数,您的代码需要如下所示:

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

否则没有()它将返回函数而不是调用它。请注意,这也将编译为return this.foo(),因此如果您不想返回任何内容,请在最后一行添加空白return

答案 1 :(得分:0)

使用@foo()。在课堂上声明的functions会添加到班级的prototype中。看看代码here

生成的javascript

要调用直接添加到函数原型的函数,您需要this