CoffeeScript - 理解“@”
我已经阅读了CoffeeScript OOP上的几篇论文。从他们身上,我理解正确的话,使用中的CoffeeScript的@
号(和在JavaScript this
前缀):CoffeeScript - 理解“@”
- 变量:使一个类的实例成员变量。每一个实例都有它自己的这种变量(非静态变量)
- 的“方法”:使得方法静态的,这违背了它与变量确实
我在JS和CS,一个小白遗憾。他们的理念与我习惯的理念完全不同。
UPDATE
下面是对信息的引用,本人已阅读:
- reference-1
- reference-2
只需搜索static
。
回答:
在方法中,@
是JavaScript的this
并且指向当前对象;当前对象取决于方法的调用方式,请参阅call
和apply
,以了解如何使用方法的@
(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