日々精進

新しく学んだことを書き留めていきます

coffeescriptでプロパティのオーバーライドができない

下記のようなコードでfooプロパティをオーバーライドした場合、

    class Super
      foo: =>
        console.log "super"

    class Sub extends Super
      foo: ["test"]
    s = new Sub
    console.log s.foo.toString()

ログに出力される結果は以下のようになる。

function (){ return fn.apply(me, arguments); }

なんだこりゃ。。
もちろんコードの意図としては、fooは["test"]を返して欲しい。
これはプロパティ定義で=>を使っている場合に起こるようで、
以下のように書き換えると意図したとおりの動きになる。

    class Super
      foo: ->
        console.log "super"

    class Sub extends Super
      foo: ["test"]
    s = new Sub
    console.log s.foo.toString()

原因はまだ調べてないけどいやな仕様だな。