0

次のコードを実行するとします。

class Test
  t: ->
    "hell"
  d: ->
    console.log t()
    "no"

次のようにコンパイルされます。

(function() {
  this.Test = (function() {
    function Test() {}
    Test.prototype.t = function() {
      return "hell";
    };
    Test.prototype.d = function() {
      console.log(t());
      return "no";
    };
    return Test;
  })();
}).call(this);

わかりました、メソッドt()内でd()メソッドを呼び出すことはできません。

なぜだめですか?どうすれば修正できますか?

前もって感謝します。

4

1 に答える 1

10
class Test
  t: ->
    "hell"
  d: ->
    console.log @t()
    #           ^ Added
    "no"

CoffeeScript では、Javascript と同様に、プロトタイプのメソッドに のプロパティとしてアクセスする必要がありますthis。CoffeeScript にはthis@文字の短縮形があります。 @t()にコンパイルされthis.t()ます。そして、呼び出したインスタンスのコンテキストでthis.t()実行されます。Test.prototype.t()

于 2013-01-15T20:46:07.900 に答える