CoffeeScript - 理解“@”

我已经阅读了CoffeeScript OOP上的几篇论文。从他们身上,我理解正确的话,使用中的CoffeeScript的@号(和在JavaScript this前缀):CoffeeScript - 理解“@”

  • 变量:使一个类的实例成员变量。每一个实例都有它自己的这种变量(非静态变量)
  • 的“方法”:使得方法静态的,这违背了它与变量确实

我在JS和CS,一个小白遗憾。他们的理念与我习惯的理念完全不同。

UPDATE

下面是对信息的引用,本人已阅读:

  • reference-1
  • reference-2

只需搜索static

回答:

在方法中,@是JavaScript的this并且指向当前对象;当前对象取决于方法的调用方式,请参阅callapply,以了解如何使用方法的@(AKA this);您也可以使用CoffeeScript中的对象use => to bind a method。

如果你说@p = 11,这与this.p = 11相同,并使p在该对象中可用。

在类定义中,@引用类本身。所以这个:

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/

这些可能也有兴趣:

  • Variable types in CoffeeScript
  • How to make method private and inherit it in Coffeescript?

以上是 CoffeeScript - 理解“@” 的全部内容, 来源链接: utcz.com/qa/259430.html

回到顶部