2

新しいオブジェクトを作成するときに、異なる「クラス」/プロトタイプの複数のプロパティを定義したいと考えています。

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."です。

4

1 に答える 1

2

{}「オブジェクト」を意味する場合にのみ使用してください。

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}) ->
      super

    #methods relating only to birds

class Cat extends Animal
    constructor: ({@tailLength}) ->
      super

    #methods relating only to cats

myCat = new Cat(tailLength: "long", name: "Mr. Whiskers", temperament: "Lazy", diet: "Carnivore")
于 2013-06-10T00:16:24.257 に答える