javascript - 使用 CoffeeScript 在 "public variable"中获取 "private method"

标签 javascript coffeescript private-methods public-method

我有以下代码:

class Example

  @text = 'Hello world! ;)'

  getText = ->
    @text

  constructor: ->
    alert(getText())

### Instance ###
example = new Example

这将返回“未定义”,有什么办法让它返回@text内容吗?

http://jsfiddle.net/vgS3y/

最佳答案

这是 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

关于javascript - 使用 CoffeeScript 在 "public variable"中获取 "private method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893420/

相关文章:

javascript - jQuery UI 日期选择器使移动设备出现问题

node.js - 当node-amqp时也不异常(exception)

unit-testing - 如何对调用私有(private)方法并依次调用 Web 服务方法的公共(public)方法进行单元测试

java - 什么时候使用私有(private)构造函数有用?

javascript - 无法从 Ionic2 的回调中访问本地属性

javascript - 在选择 radio 上,重定向到一个链接

javascript - 通过将嵌套属性提升到一个级别来转换 javascript 对象

javascript - 我该如何调试这个奇怪的 IE JavaScript 问题

javascript - 等待延迟构造函数,异步构造函数

javascript - 如何让私有(private)方法在 TypeScript 中工作?