coffeescript中的静态类和方法

coffeescript中的静态类和方法,coffeescript,Coffeescript,我想用coffeescript编写一个静态助手类。这可能吗 类别: class Box2DUtility constructor: () -> drawWorld: (world, context) -> 使用: Box2DUtility.drawWorld(w,c); 您可以通过在类方法前面加上@来定义它们: class Box2DUtility constructor: () -> @drawWorld: (world, context) ->

我想用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()
演示:

如果你想让你的
drawWorld
像构造器一样工作,那么你可以这样说
new@

class Box2DUtility
  constructor: (s) -> @s = s
  m: () -> alert "instance method called: #{@s}"
  @drawWorld: (s) -> new @ s

Box2DUtility.drawWorld('pancakes').m()

演示:

构造函数(@s)->在第二个示例中也可以工作吗?(即,代替手动赋值
@s=s
)@Trippilley:是的,如果你愿意,你可以这样做。但是如果我们将方法放入“this”,它们就不再是真正静态的了,不是吗?真正的静态方法应该留在obj.prototype中。在Shawn Mclean的示例中,我们可以这样调用方法:Box2DUtility::drawWorld(w,c)@SergeyPanfilov:但是原型中的任何东西都可以通过
这个
获得,这就是JavaScript的工作方式,所以你不能对它做任何事情。我们也没有真正的类,只有对象、原型和构造函数,因此术语更加混乱。将函数附加为构造函数的属性(这里就是这样)是与类方法最接近的等效方法。检查JavaScript
Box2DUtility::drawWorld
将不起作用。@AlvaroLourenço似乎CoffeeScript类是一个“静态块”(带有一些额外的内容):