使用CoffeeScript在“私有方法”中获取“公共变量”

时间:2013-07-27 01:32:40

标签: javascript coffeescript private-methods public-method

我有以下代码:

class Example

  @text = 'Hello world! ;)'

  getText = ->
    @text

  constructor: ->
    alert(getText())

### Instance ###
example = new Example

这将返回'undefined',有没有办法让它返回@text内容?

http://jsfiddle.net/vgS3y/

1 个答案:

答案 0 :(得分: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