CoffeeScript:关键字' super'在这种情况下呢?

时间:2013-08-09 17:54:58

标签: class coffeescript

class Animal
  constructor: (@name) ->

  move: (meters) ->
    alert @name + " moved #{meters}m."

class Snake extends Animal
   move: ->
    alert "Slithering..."
    super 5

所以我正在阅读CoffeeScript文档并进入上面的类扩展插图。有人可以向我解释行super 5执行时究竟发生了什么吗?我模糊地理解它是用参数5来调用超类的move定义,但如果假设我的蛇的名字是mySnake.move而调用Robert,那么输出会是什么样的?

1 个答案:

答案 0 :(得分:2)

super将在基类上调用move方法。具体来说,它会调用Animal move方法,并将5作为meters参数传递。

如果您在CoffeeScript页面上运行该示例,您应该会看到一条警告“Sammy the Python移动了5米。”

当您的子类除了基类实现之外还有自己的逻辑运行时,

super非常有用。您可以将super放在方法的开头,或者在其他代码运行之后。顺序可能很重要,具体取决于现有的逻辑。