假设我执行以下代码:
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()
。
为什么不呢?我该如何解决?
提前致谢。
答案 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()
。