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 Box2DUtility::drawWorld
가 작동하지 않는지 확인하십시오 .
constructor: (@s) ->
또한 두 번째 예제에서 작동? (즉, 수동 할당 대신@s = s
)