【发布时间】:2012-02-23 19:41:56
【问题描述】:
我想在coffeescript 中编写一个静态助手类。这可能吗?
类:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
使用:
Box2DUtility.drawWorld(w,c);
【问题讨论】:
标签: coffeescript
我想在coffeescript 中编写一个静态助手类。这可能吗?
类:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
使用:
Box2DUtility.drawWorld(w,c);
【问题讨论】:
标签: coffeescript
您可以通过在类方法前面加上@: 来定义它们:
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()
【讨论】:
constructor: (@s) -> 也适用于第二个示例吗? (即,而不是手动分配@s = s)
this 获得,这就是 JavaScript 的工作原理,所以你无能为力。我们也没有真正的类,只有对象、原型和构造函数,所以术语更加混乱。将函数作为构造函数的属性(这就是这里发生的事情)与我们拥有的类方法最接近。检查 JavaScript Box2DUtility::drawWorld 是否不起作用。