Статические классы и методы в coffeescript


Я хочу написать статический вспомогательный класс в CoffeeScript. Это возможно?

класс:

class Box2DUtility

  constructor: () ->

  drawWorld: (world, context) ->

использование:

Box2DUtility.drawWorld(w,c);
1 85

1 ответ:

вы можете определить методы класса, добавив к ним префикс @:

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

демо: http://jsfiddle.net/ambiguous/bjPds/1/