0

假设我执行以下代码:

class Test
  t: ->
    "hell"
  d: ->
    console.log t()
    "no"

它将编译为:

(function() {
  this.Test = (function() {
    function Test() {}
    Test.prototype.t = function() {
      return "hell";
    };
    Test.prototype.d = function() {
      console.log(t());
      return "no";
    };
    return Test;
  })();
}).call(this);

好的,我不能在方法t()内部调用d()方法。

为什么不?我该如何解决?

提前致谢。

4

1 回答 1

10
class Test
  t: ->
    "hell"
  d: ->
    console.log @t()
    #           ^ Added
    "no"

在 CoffeeScript 中,就像在 Javascript 中一样,原型上的方法必须作为this. CoffeeScript 有this,@字符的简写。 @t()编译为this.t(). 并将在您调用它的实例的上下文中this.t()执行Test.prototype.t()

于 2013-01-15T20:46:07.900 回答