ฉันต้องการเขียนคลาสผู้ช่วยแบบคงที่ในกาแฟ เป็นไปได้หรือไม่
ชั้น:
class Box2DUtility
  constructor: () ->
  drawWorld: (world, context) ->
ใช้:
Box2DUtility.drawWorld(w,c);
    ฉันต้องการเขียนคลาสผู้ช่วยแบบคงที่ในกาแฟ เป็นไปได้หรือไม่
ชั้น:
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()
การสาธิต: http://jsfiddle.net/ambiguous/bjPds/1/
thisเช่นกันนั่นเป็นเพียงวิธีการทำงานของ JavaScript ดังนั้นคุณจึงไม่สามารถทำอะไรได้เลย เราไม่มีคลาสทั้งอ็อบเจกต์ต้นแบบและฟังก์ชันคอนสตรัคเตอร์ดังนั้นคำศัพท์จึงสับสนมากขึ้น การแนบฟังก์ชันเป็นคุณสมบัติของฟังก์ชันตัวสร้าง (ซึ่งเป็นสิ่งที่เกิดขึ้นที่นี่) นั้นใกล้เคียงที่สุดกับเมธอดคลาสที่เรามี ตรวจสอบว่า JavaScript Box2DUtility::drawWorld  ไม่ทำงาน
                    
constructor: (@s) ->ทำงานในตัวอย่างที่สองด้วยหรือไม่ (กล่าวคือแทนการกำหนดด้วยตนเอง@s = s)