Je veux écrire une classe d'assistance statique dans coffeescript. Est-ce possible?
classe:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
en utilisant:
Box2DUtility.drawWorld(w,c);
Je veux écrire une classe d'assistance statique dans coffeescript. Est-ce possible?
classe:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
en utilisant:
Box2DUtility.drawWorld(w,c);
Réponses:
Vous pouvez définir des méthodes de classe en les préfixant avec @
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Démo: http://jsfiddle.net/ambiguous/5yPh7/
Et si vous voulez que vous drawWorld
agissiez comme un constructeur, vous pouvez dire new @
comme ceci:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
this
, c'est comme ça que JavaScript fonctionne, donc vous ne pouvez rien y faire. Nous n'avons pas vraiment de classes non plus, juste des objets, des prototypes et des fonctions de constructeur, donc la terminologie est encore plus confuse. Attacher des fonctions en tant que propriétés de la fonction constructeur (ce qui se passe ici) est l'équivalent le plus proche d'une méthode de classe que nous avons. Vérifiez que JavaScript Box2DUtility::drawWorld
ne fonctionnera pas.
constructor: (@s) ->
également travailler dans le second exemple? (c'est-à-dire au lieu de l'assignation manuelle@s = s
)