通过扩展类调用超类的方法会导致TypeError

时间:2014-07-03 09:32:40

标签: coffeescript

我不确定标题是否说明了一切。

我要做的是拥有一个超级类(或多或少抽象类),然后由另一个从超类扩展的类使用。

现在我做的是创建一个简单的脚本:

class Animal
  constructor: (@name, @sound) ->
  setSound: (@sound) ->
  sound: ->
    alert "#{@sound}!!!"

  name: ->
    alert "#{@name}"

class Dog extends Animal
  constructor: (@name) ->
    @setSound "Woof"

doggy = new Dog "Max"
doggy.sound()

正如你所看到的 - 这只是一个蹩脚的例子,但是当我现在调用doggy.sound()时,我得到一个TypeError作为回报。

您可以在此处查看此脚本:http://jsfiddle.net/zrVZb/1/
我做错了什么,或者这甚至是coffeescript中的错误?

编辑:我刚看到它是contructor而不是construct。但现在我得到了TypeError。

由于

1 个答案:

答案 0 :(得分:0)

您的方法称为sound。但是然后传递一个具有相同名称的属性,它会覆盖此方法。尝试将声音方法重命名为makeSound:

http://jsfiddle.net/V7Dx8/1/