Saya ingin menulis kelas pembantu statis di coffeescript. Apakah ini mungkin?
kelas:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
menggunakan:
Box2DUtility.drawWorld(w,c);
Saya ingin menulis kelas pembantu statis di coffeescript. Apakah ini mungkin?
kelas:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
menggunakan:
Box2DUtility.drawWorld(w,c);
Jawaban:
Anda dapat mendefinisikan metode kelas dengan mengawali mereka dengan @
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Demo: http://jsfiddle.net/ambiguous/5yPh7/
Dan jika Anda ingin Anda drawWorld
bertindak seperti konstruktor maka Anda dapat mengatakan new @
seperti ini:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
this
, begitulah cara kerja JavaScript sehingga Anda tidak dapat berbuat apa-apa. Kami juga tidak benar-benar memiliki kelas, hanya objek, prototipe, dan fungsi konstruktor sehingga terminologinya semakin membingungkan. Melampirkan fungsi sebagai properti dari fungsi konstruktor (yang terjadi di sini) adalah yang paling mirip dengan metode kelas yang kita miliki. Periksa apakah JavaScript Box2DUtility::drawWorld
tidak akan berfungsi.
constructor: (@s) ->
juga akan berhasil pada contoh kedua? (yaitu, alih-alih tugas manual@s = s
)