首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoffeeScript -理解"@“

CoffeeScript -理解"@“
EN

Stack Overflow用户
提问于 2012-06-10 20:26:04
回答 1查看 160关注 0票数 2

我读过几篇关于CoffeeScript OOP的论文。从它们中,我是否正确地理解了在CoffeeScript中使用CoffeeScript符号(在JavaScript中使用this前缀):

  • 变量:使变量成为类实例的成员。每个实例都有自己的这样一个变量(非静态变量)
  • 对于“方法”:使方法是静态的,这与它对变量所做的相反。

我是JS和CS的菜鸟,对不起。他们的哲学与我所习惯的完全不同。

更新

以下是我所读到的信息的参考资料:

  • 参考资料-1
  • 参考资料-2

只需搜索static

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-10 20:40:23

在方法中,@是JavaScript的this,并引用当前对象;当前对象取决于方法的调用方式,请参阅callapply,以了解如何处理方法的@ (AKA this);您还可以将绑定方法用于CoffeeScript中的对象。

如果您说@p = 11,这与this.p = 11相同,并使p在该对象中可用。

在类定义中,@引用类本身。所以这个:

代码语言:javascript
复制
class C
    @m: -> ...

定义类方法,您可以使用C.m()来执行它。

考虑一下这个例子:

代码语言:javascript
复制
class C
    a: -> @p = 11
    b: -> console.log(@p)
    @c: -> console.log('Class method')

C.c()            // This calls the class method.
o = new C
o.b()            // There is no 'o.p' yet.
o.a()            // This sets 'o.p'.
o.b()            // And now we see an 'o.p'.
console.log(o.p) // And we see o.p here as well.

这将使您在控制台中获得以下输出:

代码语言:javascript
复制
Class method
undefined
11
11

演示:http://jsfiddle.net/ambiguous/DFcRt/

这些也可能是值得注意的:

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10972100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档