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 回答