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
,那么输出会是什么样的?
答案 0 :(得分:2)
super
将在基类上调用move
方法。具体来说,它会调用Animal
move
方法,并将5
作为meters
参数传递。
如果您在CoffeeScript页面上运行该示例,您应该会看到一条警告“Sammy the Python移动了5米。”
当您的子类除了基类实现之外还有自己的逻辑运行时, super
非常有用。您可以将super
放在方法的开头,或者在其他代码运行之后。顺序可能很重要,具体取决于现有的逻辑。