Ich möchte eine statische Hilfsklasse in Coffeescript schreiben. Ist das möglich?
Klasse:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
mit:
Box2DUtility.drawWorld(w,c);
Ich möchte eine statische Hilfsklasse in Coffeescript schreiben. Ist das möglich?
Klasse:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
mit:
Box2DUtility.drawWorld(w,c);
Antworten:
Sie können Klassenmethoden definieren, indem Sie ihnen Folgendes voranstellen @
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Demo: http://jsfiddle.net/ambiguous/5yPh7/
Und wenn Sie möchten, dass Sie drawWorld
sich wie ein Konstruktor verhalten, können Sie Folgendes sagen new @
:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
this
So funktioniert JavaScript, sodass Sie nichts dagegen tun können. Wir haben auch keine Klassen, nur Objekte, Prototypen und Konstruktorfunktionen, daher ist die Terminologie noch verwirrender. Das Anhängen von Funktionen als Eigenschaften der Konstruktorfunktion (was hier passiert) entspricht am ehesten einer Klassenmethode, die wir haben. Überprüfen Sie, ob JavaScript Box2DUtility::drawWorld
nicht funktioniert.
constructor: (@s) ->
auch im zweiten Beispiel funktionieren? (dh anstelle der manuellen Zuordnung@s = s
)