重写CoffeeScript类中的toString
我在CoffeeScript中创建了一个类,我想覆盖重写CoffeeScript类中的toString,coffeescript,Coffeescript,我在CoffeeScript中创建了一个类,我想覆盖toString()函数;这是我的密码: class MenuController constructor: () -> 'constructor' toString: () -> 'MenuController' console.log MenuController.toString() 但是toString()返回: function MenuController() { 'construct
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
方法。可能会重复惊人!这就是为什么我如此爱你!静态方法和类方法不是一回事吗?如果你把这个答案中的“类方法”替换为“实例方法”,我认为这是正确的。