Quiero escribir una clase de ayuda estática en coffeescript. es posible?
clase:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
utilizando:
Box2DUtility.drawWorld(w,c);
Quiero escribir una clase de ayuda estática en coffeescript. es posible?
clase:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
utilizando:
Box2DUtility.drawWorld(w,c);
Respuestas:
Puede definir métodos de clase prefijándolos con @
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Demostración: http://jsfiddle.net/ambiguous/5yPh7/
Y si quieres drawWorld
que actúes como un constructor, puedes decir new @
así:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
Demostración: http://jsfiddle.net/ambiguous/bjPds/1/
this
, así es como funciona JavaScript, por lo que no puede hacer nada al respecto. En realidad, tampoco tenemos clases, solo objetos, prototipos y funciones de constructor, por lo que la terminología es aún más confusa. Adjuntar funciones como propiedades de la función constructora (que es lo que está sucediendo aquí) es el equivalente más cercano a un método de clase que tenemos. Compruebe que JavaScript Box2DUtility::drawWorld
no funcionará.
constructor: (@s) ->
También funcionaría en el segundo ejemplo? (es decir, en lugar de la asignación manual@s = s
)