class A
constructor: ->
method: ->
上記の例では、メソッドはクラスにバインドされず、どちらもコンストラクタではありません。は、バインドされた関数としてコンストラクタを定義できません。
class B
constructor: ->
method: =>
この場合、メソッドはクラスにバインドされます。これは、通常のオブジェクトメソッドが動作することを期待し、クラスBのすべてのフィールドにアクセスできるように動作します。しかし、コンストラクタはバインドされていませんか?それは奇妙に思える。だから私は以下を試した。
class C
constructor: =>
method: =>
これはコンパイルされません。クラスにバインドされているすべてのメソッドで構文が同じになると思います。
私は - >演算子をstatic
演算子、=>演算子をdynamic
演算子と見なしたいと思います。しかし、それはあなたのようには思われません。できれば、 - >演算子を持つメソッドをsuperで呼び出すことができませんでした。しかし、実際には、あなたがすることができます。なぜこれはオブジェクト指向言語の構文には意味がありますか?これは、ほとんどのオブジェクト指向言語の継承ルールには同意しないようです。
staticとvs dynamicの違いは、静的メソッドはオーバーライドできませんが、動的メソッドは可能です。ダイナミックではなく、バーチャルと言うべきでしょうか? –
私はこれらの概念のどちらかが ' - >'と '=>'の違いに対応しているとは思っていません。彼らはjavascriptの 'this'変数の不思議さに関係しています。 –
ya、私はそれを得る。しかし、言語がjavascriptにコンパイルされているので、coffeescriptを直接評価することができます。これらの構文規則は意味がありますか? –