2

toString()CoffeeScript でクラスを作成しましたが、関数を上書きしたいと考えています。ここに私のコードがあります:

class MenuController

  constructor: () ->
    'constructor'

  toString: () ->
    'MenuController'

console.log MenuController.toString()

ただしtoString()、次を返します。

function MenuController() {
  'constructor';
}

ではありませんMenuController。私は何を間違っていますか?

4

1 に答える 1

1

toStringクラスメソッドとして定義しました。したがって、次のように呼び出すことができます。

menuController = new MenuController()
menuController.toString()

静的メソッドが本当に必要な場合は、次の構文を使用する必要があります。

class MenuController
  @toString: ->
    'MenuController'

次に、次のように呼び出すことができます。

MenuController.toString()

でも、もはやクラスメソッドではないので、

(new MenuController()).toString()

toStringメソッドを呼び出しません。

于 2013-02-26T16:56:55.980 に答える