新しいオブジェクトを作成するときに、異なる「クラス」/プロトタイプの複数のプロパティを定義したいと考えています。
class Animal
constructor: (@name, @temperament, @diet) ->
#methods that use those properties
eat: (food) ->
console.log "#{name} eats the #{food}."
class Bird extends Animal
constructor: (@wingSpan) ->
#methods relating only to birds
class Cat extends Animal
constructor: (@tailLength) ->
#methods relating only to cats
myCat = new Cat ("long", {"Mr. Whiskers", "Lazy", "Carnivore"})
しかし、私は何か間違ったことをしています。Cat のコンストラクターのみがプロパティを取得するようです。
また、キーと値のペアでそれらを定義する方法はありますか? 理想的には、 のようなものを記述myCat = new Cat (tailLength: "long", name: "Mr. Whiskers", temperament: "Lazy")
して、順序どおりでないプロパティを定義できるようにし、「ダイエット」などのプロパティの定義に失敗した場合にデフォルトにフォールバックするようにします。
私の理解では、プロトタイプ メソッドはバブルアップするので、 を呼び出すmyCat.eat 'cat food'
と、出力は次のようになるはず"Mr. Whiskers eats the cat food."
です。