L'appel de coffescript super méthodes
J'ai le code suivant:
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()
Le résultat n'est pas
Hello from animal called Bobby
Hello from animal called Duffy
Hello from dog called Duffy
Mais j'obtiens l'erreur suivante:
Hello from animal called Bobby
Hello from animal called Duffy
Uncaught TypeError: Cannot call method 'say' of undefined
Comment se fait-super est pas défini? Comment appeler une méthode parent en vue de l'étendre? Grâce
- Votre estimation était de mon avis... je me demande pourquoi ils n'ont pas juste le faire fonctionner comme pratiquement tout le monde devine qu'il le devrait? Peut-être une discussion intéressante
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse moi-même, il convient de:
super()
?()
lors de l'appel à super. Le compilateur ne peut pas savoir que lorsque vous utilisez lesuper
mot clé que vous appelant la fonction.super("woof")
.