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
的定义,但是如果假设我的蛇的名字是 Robert
来调用 mySnake.move
,输出会是什么样子?
>super
将在基类上调用move
方法。 具体来说,它将调用 Animal
move
方法并将5
作为 meters
参数传入。
如果在 CoffeeScript 页面上运行该示例,您应该会看到一条警报,其中包含"Sammy the Python 移动了 5m"。
当子类除了基类实现之外还有自己的逻辑要运行时,super
很有用。可以将super
放在方法的开头,也可以放在其他代码运行之后。顺序可能很重要,具体取决于现有的逻辑。