CoffeeScript类 - @和这个

时间:2013-06-19 13:24:46

标签: coffeescript

我对CoffeeScript中@的使用感到困惑。我希望这可行,但它没有 -

obj=new class
 @x:5
 getX:->return @x

alert obj.getX() # undefined

另一方面,如果我们从@移除@x:5,那么它会以某种方式工作 -

obj=new class
 x:5
 getX:->return @x

alert obj.getX() # 5

我认为@x与this.x相似,但在第二种情况下,我没有定义@x。它为什么有效?

我应该何时定义@x:5而不是x:5

1 个答案:

答案 0 :(得分:1)

首先,您要定义“静态”x和“非静态”getX。在第二个实例中,成员和方法都是非静态的。

如果您为自己的课程命名,则可以将x作为ClassName.x访问第一个版本:

class TestClass
 @x: 5
 y: 6

obj = new TestClass

TestClass.x # 5
obj.y # 6

当你在一个类方法中时,通常应该只使用@;在类声明中,this所引用的@可以被视为类本身。