我已經閱讀了CoffeeScript OOP上的幾篇論文。從他們身上,我理解正確的話,使用中的CoffeeScript的@
號(和在JavaScript this
前綴):CoffeeScript - 理解「@」
- 變量:使一個類的實例成員變量。每一個實例都有它自己的這種變量(非靜態變量)
- 的「方法」:使得方法靜態的,這違背了它與變量確實
我在JS和CS,一個小白遺憾。他們的理念與我習慣的理念完全不同。
UPDATE
下面是對信息的引用,本人已閱讀:
只需搜索static
。
我已經閱讀了CoffeeScript OOP上的幾篇論文。從他們身上,我理解正確的話,使用中的CoffeeScript的@
號(和在JavaScript this
前綴):CoffeeScript - 理解「@」
我在JS和CS,一個小白遺憾。他們的理念與我習慣的理念完全不同。
UPDATE
下面是對信息的引用,本人已閱讀:
只需搜索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/
這些可能也有興趣:
完美的答案!那就是所有的論文我讀過失蹤了。 – noncom
「爲‘方法’:使方法靜態」 - 我沒有看到任何表明此的任何地方。 – Eric
@Eric:查看更新。 – noncom
你在問什麼嗎? – lanzz