Я хочу написать статический вспомогательный класс в coffeescript. Это возможно?
класс:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
с помощью:
Box2DUtility.drawWorld(w,c);
Я хочу написать статический вспомогательный класс в coffeescript. Это возможно?
класс:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
с помощью:
Box2DUtility.drawWorld(w,c);
Ответы:
Вы можете определить методы класса, добавив к ним префикс @
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Демо: http://jsfiddle.net/ambiguous/5yPh7/
И если вы хотите, чтобы вы drawWorld
действовали как конструктор, вы можете сказать new @
так:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
this
JavaScript, именно так работает JavaScript, поэтому вы ничего не можете с этим поделать. На самом деле у нас тоже нет классов, только объекты, прототипы и функции-конструкторы, поэтому терминология еще более запутана. Присоединение функций как свойств функции-конструктора (что здесь и происходит) является ближайшим эквивалентом имеющегося у нас метода класса. Проверить, что JavaScript Box2DUtility::drawWorld
не работает.
constructor: (@s) ->
работать и во втором примере? (т.е. вместо ручного задания@s = s
)