2

假设我有一个这样的 Coffeescript 类:

class Foo
    aVar = 'foo'

    someFunction = ->
        anotherVar = 'bar'

有没有一种方法可以设置anotherVar为类变量而不必将其声明为 null,如下所示:

class Foo
    aVar = 'foo'
    anotherVar = null

    someFunction = ->
        anotherVar = 'bar'
4

2 回答 2

2

不,你不能。让我们看一个简单的类:

class C
    cv = null
    m: -> cv

即转换为此 JavaScript:

var C = (function() {
  var cv;
  function C() {}
  cv = null;
  C.prototype.m = function() {
    return cv;
  };
  return C;
})();

您会注意到“私有类变量”cv只是构建的自执行函数内部的一个局部变量C。因此,如果我们想向 中添加一个新的“私有类变量” C,我们必须再次打开该匿名函数的作用域并添加新变量。但是没有办法回到过去并改变已经执行的函数的范围,所以你不走运。

当你定义它时,你不必定义你的anotherVaras null,但你必须将它初始化为一些东西。

于 2012-06-25T16:53:30.350 回答
0

你听说过this关键字吗?:) CoffeeScript 映射@this

class Foo
    aVar = 'foo'

    someFunction: ->
        @anotherVar = 'bar'
于 2012-06-25T10:54:16.377 回答