Eu quero escrever uma classe auxiliar estática em coffeescript. Isso é possível?
classe:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
usando:
Box2DUtility.drawWorld(w,c);
Eu quero escrever uma classe auxiliar estática em coffeescript. Isso é possível?
classe:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
usando:
Box2DUtility.drawWorld(w,c);
Respostas:
Você pode definir métodos de classe prefixando-os com @
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Demo: http://jsfiddle.net/ambiguous/5yPh7/
E se você quiser drawWorld
que aja como um construtor, você pode dizer new @
assim:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
this
, é assim que o JavaScript funciona, então você não pode fazer nada a respeito. Na verdade, também não temos classes, apenas objetos, protótipos e funções de construtor, então a terminologia é ainda mais confusa. Anexar funções como propriedades da função construtora (que é o que está acontecendo aqui) é o equivalente mais próximo a um método de classe que temos. Verifique se o JavaScript Box2DUtility::drawWorld
não funciona.
constructor: (@s) ->
também trabalham no segundo exemplo? (ou seja, em vez da atribuição manual@s = s
)