2011年11月13日日曜日

CoffeeScriptを学ぶ(2)

JavaScriptはプロトタイプベースのオブジェクト指向だったので、
クラスという概念はなかったのですが、
CoffeeScriptには、クラスという概念があります。
  1. class Hello  
  2.   method:  ->  
  3.     alert "hello"  
"class クラス名"でクラスを宣言できます。
メソッドは、クラスのブロックで
メソッド名: (引数) ->
  メソッド本体
と書きます。

これをJavaScriptに変換すると、下記のようになります。
  1. var Hello;  
  2.   
  3. Hello = (function() {  
  4.   function Hello() {}  
  5.   Hello.prototype.method = function() {  
  6.     return alert("hello");  
  7.   };  
  8.   return Hello;  
  9. })();  

CoffeeScriptのページのサンプルの例を持ってくると
  1. class Animal  
  2.   constructor: (@name) ->  
  3.   
  4.   move: (meters) ->  
  5.     alert @name + " moved #{meters}m."  
Animalとうクラスです。
コンストラクタは "constructor:"で定義できます。
@xxxはインスタンス変数ですね。
ちなみに#{}を使えば、文字列のなかで変数を評価して値を使用できます。(Rubyと同じ構文ですね。)
  1. class Snake extends Animal  
  2.   move: ->  
  3.     alert "Slithering..."  
  4.     super 5  
  5.   
  6. class Horse extends Animal  
  7.   move: ->  
  8.     alert "Galloping..."  
  9.     super 45  
継承はextendsを使います。
superでスーパークラスのメソッドを呼び出すことができます。

やっぱりクラスを使うと、比較的大きなコードを書くときは、考えやすくて便利ですよね。

0 件のコメント: