Voglio scrivere una classe helper statica in coffeescript. È possibile?
classe:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
utilizzando:
Box2DUtility.drawWorld(w,c);
Voglio scrivere una classe helper statica in coffeescript. È possibile?
classe:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
utilizzando:
Box2DUtility.drawWorld(w,c);
Risposte:
È possibile definire metodi di classe anteponendoli a @
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Demo: http://jsfiddle.net/ambiguous/5yPh7/
E se vuoi che ti drawWorld
comporti come un costruttore, puoi dire in new @
questo modo:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
this
, è così che funziona JavaScript, quindi non puoi fare nulla al riguardo. Non abbiamo nemmeno classi, solo oggetti, prototipi e funzioni di costruzione, quindi la terminologia è ancora più confusa. Associare funzioni come proprietà della funzione di costruzione (che è ciò che sta accadendo qui) è l'equivalente più vicino a un metodo di classe che abbiamo. Verifica che JavaScript Box2DUtility::drawWorld
non funzioni.
constructor: (@s) ->
anche nel secondo esempio? (cioè al posto dell'assegnazione manuale@s = s
)