在Coffeescript中从super方法共享局部变量

时间:2013-11-27 20:38:55

标签: coffeescript

有没有办法在Coffeescript中访问父函数中使用的局部变量?

例如,从B类知道testLocal的值:

class A
  constructor: ->
    @init()

  init: ->
    testLocal = 56


class B extends A

  init: ->
    super
    alert testLocal

new B()

1 个答案:

答案 0 :(得分:0)

在对@

的引用前添加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类。