重写CoffeeScript类中的toString

重写CoffeeScript类中的toString,coffeescript,Coffeescript,我在CoffeeScript中创建了一个类,我想覆盖toString()函数;这是我的密码: class MenuController constructor: () -> 'constructor' toString: () -> 'MenuController' console.log MenuController.toString() 但是toString()返回: function MenuController() { 'construct

我在CoffeeScript中创建了一个类,我想覆盖
toString()
函数;这是我的密码:

class MenuController

  constructor: () ->
    'constructor'

  toString: () ->
    'MenuController'

console.log MenuController.toString()
但是
toString()
返回:

function MenuController() {
  'constructor';
}

而不是
MenuController
。我做错了什么?

您将
toString
定义为类方法。因此,您可以将其称为:

menuController = new MenuController()
menuController.toString()
如果静态方法确实是您想要的,那么您应该使用以下语法:

class MenuController
  @toString: ->
    'MenuController'
然后,您可以这样称呼它:

MenuController.toString()
但是,它将不再是类方法,所以

(new MenuController()).toString()

不会调用您的
toString
方法。

可能会重复惊人!这就是为什么我如此爱你!静态方法和类方法不是一回事吗?如果你把这个答案中的“类方法”替换为“实例方法”,我认为这是正确的。