在引用前面testLocal
class A
constructor: ->
@init()
init: ->
@testLocal = 56
class B extends A
init: ->
super
alert @testLocal
new B()
添加@
符號在你原來的例子,相應的JavaScript外觀像這樣:
A.prototype.init = function() {
var testLocal;
return testLocal = 56;
};
return A;
B.prototype.init = function() {
B.__super__.init.apply(this, arguments);
return alert(testLocal);
};
隨着@
增加,你會得到這個代替:
A.prototype.init = function() {
return this.testLocal = 56;
};
B.prototype.init = function() {
B.__super__.init.apply(this, arguments);
return alert(this.testLocal);
};
@
增加了this.
的引用,移動可變出局部範圍,並進入CoffeeScript的puesdo類。
嗯,這就是我不想做的事情,因爲這會破壞局部變量的作用域。謝謝。 – mojarras
@mojarras這是一個本地變量,它的範圍結束後不再存在。要在下降和ctor訪問它,你必須擴大範圍。 '@'實現了這一點,使之成爲類的一個屬性/字段,而不是本地的。 – asawyer
是的,我想沒有其他方法比用@標記它們,我只是認爲有一些方法可以共享這些局部變量。感謝你的回答。 – mojarras