CoffeeScript:在这种情况下,关键字'super'做什么?


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放在方法的开头,也可以放在其他代码运行之后。顺序可能很重要,具体取决于现有的逻辑。

最新更新