Coffeescript类和变量

时间:2012-06-25 10:44:23

标签: class coffeescript

说我有这样的Coffeescript课程:

class Foo
    aVar = 'foo'

    someFunction = ->
        anotherVar = 'bar'

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

class Foo
    aVar = 'foo'
    anotherVar = null

    someFunction = ->
        anotherVar = 'bar'

2 个答案:

答案 0 :(得分: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添加一个新的“私有类变量”,我们必须再次打开该匿名函数的范围并添加新变量。但是没有办法及时返回并改变已执行的功能的范围,因此你运气不佳。

您在定义anotherVar时不必定义null,但必须将其初始化为某些内容。

答案 1 :(得分:0)

您是否听说过this关键字? :) CoffeeScript将@映射到this

class Foo
    aVar = 'foo'

    someFunction: ->
        @anotherVar = 'bar'
相关问题