0

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

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

alert obj.getX() # undefined

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

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

alert obj.getX() # 5

我以为@x 和this.x 类似,但是第二种情况,我没有定义@x。为什么它有效?

我什么时候应该定义@x:5而不是x:5

4

1 回答 1

1

在第一个实例中,您定义了一个 "static"x和一个 "non-static" getX。在第二种情况下,成员和方法都是非静态的。

如果您为您的班级命名,您将能够访问第一个版本xClassName.x

class TestClass
 @x: 5
 y: 6

obj = new TestClass

TestClass.x # 5
obj.y # 6

您通常应该只@在您在类方法中时使用;在类声明中,this@引用的 可以被认为是类本身。

于 2013-06-19T13:33:46.070 回答