2

CoffeeScriptOOPに関するいくつかの論文を読みました。@それらから、CoffeeScriptのサイン(およびthisJavaScriptのプレフィックス)を使用することを正しく理解していますか?

  • 変数の場合:変数をクラスインスタンスのメンバーにします。各インスタンスには、独自のそのような変数(非静的変数)があります
  • 「メソッド」の場合:メソッドを静的にします。これは、変数の場合とは逆です。

私はJSとCSの初心者です。ごめんなさい。彼らの哲学は私が慣れているものとはかなり異なります。

アップデート

これが私が読んだ情報に関する参考文献です:

を検索するだけですstatic

4

1 に答える 1

9

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

あなたが言うなら@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 に答える