我无法理解@(this)在类函数面前的确切含义。我正在使用Spine框架,我得到了一个扩展Contact的课程Spine.model。我重写Spine方法来创建,删除,获取等,并让它们首先在控制台上打印:
create: ->
console.log('create')
super
destroy: ->
console.log("destroy")
super
如果我添加@ infront,其中一些方法将起作用,例如create,而其他方法在没有@的情况下不起作用,而其他方法不适用于@。我覆盖的所有方法都可以在上面的链接中看到。
是否有可能向我解释@符号的影响 函数,以及它导致此行为的原因?
答案 0 :(得分:0)
来自mu的答案太短了: 您可以通过在@:
前面添加前缀来定义类方法class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!
然后画出你的世界......
Box2DUtility.drawWorld()
演示:http://jsfiddle.net/ambiguous/5yPh7/
如果你想让你的drawWorld像一个构造函数一样,那么你可以像这样说新的@:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()