CoffeeScript实例方法

CoffeeScript实例方法,coffeescript,instance-methods,Coffeescript,Instance Methods,我有一个像这样定义的CoffeeScipt类 class Foo a: 1 b: 2 main: -> if a == 1 log(1) log: (num) -> console.log(num) f = new Foo f.main() 它不断出错,说日志没有定义。我试着让它@log:也不起作用。我试着使主a的=>成为->,但也没有成功。如何从类本身内部调用实例方法?在调用实例方法和字段时使用@,而不是在定义: class Foo a

我有一个像这样定义的CoffeeScipt类

class Foo
  a: 1
  b: 2
  main: ->
   if a == 1
    log(1)

  log: (num) ->
    console.log(num)
f = new Foo
f.main()

它不断出错,说日志没有定义。我试着让它
@log:
也不起作用。我试着使主a的
=>
成为
->
,但也没有成功。如何从类本身内部调用实例方法?

在调用实例方法和字段时使用
@
,而不是在定义:

class Foo
  a: 1
  b: 2

  main: ->
   if @a == 1
    @log(1)

  log: (num) ->
    console.log(num)

f = new Foo()
f.main()
像这样用
@
定义方法

@log: (num) ->
    console.log(num)
使它们保持静态。

在CoffeeScript上开发时,请查看已编译的JS。

这加上使用
new
关键字,您应该进行设置
f=new Foo()
并将
if a==1
重写为
if Foo::a==1
,因为
a
也在原型中。很抱歉,我省略了
new
关键字,因为它在原始源代码中。这似乎奏效了。谢谢