Static classes and methods in coffeescript

Shawn Mclean picture Shawn Mclean · Feb 1, 2012 · Viewed 28.2k times · Source

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);

Answer

mu is too short picture mu is too short · Feb 1, 2012

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()

Demo: http://jsfiddle.net/ambiguous/bjPds/1/