说我有这样的Coffeescript课程:
class Foo
aVar = 'foo'
someFunction = ->
anotherVar = 'bar'
有没有办法将anotherVar
设置为类变量,而不必将其声明为null,如下所示:
class Foo
aVar = 'foo'
anotherVar = null
someFunction = ->
anotherVar = 'bar'
答案 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'