CoffeeScript和OOP -原型方法
CoffeeScript and OOP - prototype methods
假设我执行以下代码:
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);
好的,我不能在d()
方法中调用t()
方法。
为什么不呢?我该怎么修理它?
class Test
t: ->
"hell"
d: ->
console.log @t()
# ^ Added
"no"
在CoffeeScript中,和Javascript一样,原型上的方法必须作为this
的属性来访问。CoffeeScript有this
的简写,即@
字符。@t()
编译为this.t()
。并且this.t()
将在您调用它的实例的上下文中执行Test.prototype.t()
。
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- 引用类变量中的原型方法
- 如何从对象的原型方法访问JavaScript对象属性
- 如何从构造函数中调用js原型方法
- Javascript不调用原型方法
- 有没有任何情况下,一个方法不应该是原型方法
- 调用影子原型方法的更简单/更好的方法
- 当对象从服务器发送到客户端时,JS原型方法消失了
- 构造 JavaScript Array 原型方法
- 在Javascript中扩展继承的原型方法
- 如何在另一个原型中创建可调用的原型方法
- 覆盖原型方法
- 实现原型方法
- 从原型方法更改实例属性
- XrayWrapper 错误(值是可调用的)在 Firefox 插件中覆盖原型方法时
- 避免在外部称为原型方法中丢失对象实例
- 原型方法不是一个函数,为什么
- 是否可以从 javascript 中的原型方法访问私有类属性
- 找不到 Javascript 原型方法覆盖
- 调用本机原型方法时扩展或继承对象原型