我想在coffeescript中编写一个静态助手类。这可能吗?
类:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
使用:
Box2DUtility.drawWorld(w,c);
Answers:
您可以在类方法前添加前缀@
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
演示:http://jsfiddle.net/ambiguous/5yPh7/
如果您希望自己drawWorld
像构造函数一样工作,则可以这样说new @
:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
this
,这就是JavaScript的工作方式,因此您无能为力。我们实际上也没有类,只有对象,原型和构造函数,因此术语更加混乱。将函数作为构造函数的属性附加(这就是在这里发生的事情),这与我们拥有的类方法最接近。检查JavaScriptBox2DUtility::drawWorld
是否无效。
constructor: (@s) ->
同样在第二个例子中工作?(即代替人工分配@s = s
)