2

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

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

我是JS和CS的菜鸟,对不起。他们的哲学与我习惯的完全不同。

更新

以下是我阅读的信息的参考:

只需搜索static.

4

1 回答 1

9

在方法内部,@是 JavaScript 的this,指的是当前对象;当前对象取决于该方法的调用方式,请参阅call以及apply弄乱方法@(AKA this)的方法;您还可以使用=>将方法绑定到 CoffeeScript 中的对象。

如果你说,那与该对象中的and@p = 11相同。this.p = 11p

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

class C
    @m: -> ...

定义了一个类方法,你可以说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.

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

Class method
undefined
11
11

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

这些可能也很有趣:

于 2012-06-10T20:40:23.680 回答