34

次のコードがあります。

    class Animal
        constructor: (@name) -> 
        say: () -> console.log "Hello from animal called #{ @name }"

    class Dog extends Animal

        say: () ->
            super.say()
            console.log "Hello from dog called #{ @name }"

    a = new Animal('Bobby')
    a.say()

    d = new Dog("Duffy")
    d.say()            

結果はそうではありません

Hello from animal called Bobby
Hello from animal called Duffy
Hello from dog called Duffy

しかし、次のエラーが表示されます。

Hello from animal called Bobby
Hello from animal called Duffy
Uncaught TypeError: Cannot call method 'say' of undefined

super が定義されていないのはなぜですか? それを拡張するために親メソッドを呼び出す方法は? ありがとう

4

1 に答える 1

69

私は自分で答えを見つけました。

class Dog extends Animal

    say: () ->
        super
        console.log "Hello from dog called #{ @name }"
于 2012-07-17T10:08:24.473 に答える