I want to write a static helper class in coffeescript. Is this possible?
class:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
using:
Box2DUtility.drawWorld(w,c);
You can define class methods by prefixing them with @:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Demo: http://jsfiddle.net/ambiguous/5yPh7/
And if you want your drawWorld to act like a constructor then you can say new @ like this:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
constructor: (@s) -> also work in the second example? (i.e., instead of the manual assignment @s = s)this, that's just how JavaScript works so you can't do anything about it. We don't really have classes either, just objects, prototypes, and constructor functions so the terminology is even more confused. Attaching functions as properties of the constructor function (which is what's happening here) is the closest equivalent to a class method we have. Check the JavaScript Box2DUtility::drawWorld won't work.