メソッド内に@
はJavaScriptがthis
あり、現在のオブジェクトを参照します。現在のオブジェクトは、メソッドがどのように呼び出されるかによって異なります。メソッドの(AKA )をいじる方法については、を参照call
してください。CoffeeScriptのオブジェクトにメソッドをバインドするために使用することもできます。apply
@
this
=>
あなたが言うなら@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/
これらも興味深いかもしれません: