CoffeeScript和OOP - 原型方法

时间:2013-01-15 20:45:06

标签: javascript oop coffeescript

假设我执行以下代码:

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()

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

提前致谢。

1 个答案:

答案 0 :(得分:10)

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

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