2

次のコードがあります。

class Example

  @text = 'Hello world! ;)'

  getText = ->
    @text

  constructor: ->
    alert(getText())

### Instance ###
example = new Example

これは「未定義」を返し@textます。コンテンツを返すようにする方法はありますか?

http://jsfiddle.net/vgS3y/

4

1 に答える 1

2

これは、CoffeeScript でよくあるエラーです。コンパイルされた JavaScript を見てください。

Example = (function() {
  var getText;

  Example.text = 'Hello world! ;)';

  getText = function() {
    return this.text;
  };

  function Example() {
    alert(getText());
  }

  return Example;

})();

@クラス定義で を使用すると、静的メソッドまたは変数が作成されます。つまり、クラス オブジェクトにアタッチされます。

インスタンス変数にしようとしている場合は、コンストラクターで設定します。

constructor: ->
  @text = 'Hello world! ;)'
  alert(getText())

静的プロパティにアクセスしようとしている場合は、クラス名を参照してください。

getText = ->
  Example.text
于 2013-07-27T01:43:14.220 に答える