CoffeeScript - 理解"@"

non*_*com 2 javascript coffeescript

我已经阅读了几篇关于CoffeeScript OOP的论文.从他们那里,我是否正确理解使用@CoffeeScript中的符号(以及thisJavaScript中的前缀):

  • for variables:使变量成为类实例的成员.每个实例都有自己的变量(非静态变量)
  • 对于"方法":使方法静态,这与变量的方法相反

我是JS和CS的菜鸟,对不起.他们的理念与我习惯的完全不同.

UPDATE

以下是我读过的信息的参考资料:

只是搜索static.

mu *_*ort 9

在方法内部,@是JavaScript this并引用当前对象; 当前对象取决于方法的调用方式,查看callapply解决方法的问题@(AKA this); 您还可以使用=>将方法绑定到CoffeeScript中的对象.

如果你说@p = 11,那就this.p = 11p那个对象一样可用.

在类定义中,@指的是类本身.所以这:

class C
    @m: -> ...
Run Code Online (Sandbox Code Playgroud)

定义一个类方法,你可以说C.m()执行它.

考虑这个例子:

class C
    a: -> @p = 11
    b: -> console.log(@p)
    @c: -> console.log('Class method')

C.c()            // This calls the class method.
o = new C
o.b()            // There is no 'o.p' yet.
o.a()            // This sets 'o.p'.
o.b()            // And now we see an 'o.p'.
console.log(o.p) // And we see o.p here as well.
Run Code Online (Sandbox Code Playgroud)

这将在控制台中为您提供此输出:

Class method
undefined
11
11
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/ambiguous/DFcRt/

这些也可能是有趣的: