मैं कॉफ़ीस्क्रिप्ट में एक स्थिर सहायक वर्ग लिखना चाहता हूं। क्या यह संभव है?
वर्ग:
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()
this, इसके माध्यम से ही जावास्क्रिप्ट काम करता है, इसलिए आप इसके साथ कुछ भी नहीं कर सकते। हमारे पास वास्तव में कक्षाएं नहीं हैं, बस ऑब्जेक्ट्स, प्रोटोटाइप और कंस्ट्रक्टर फ़ंक्शन हैं इसलिए शब्दावली और भी अधिक भ्रमित है। कंस्ट्रक्टर फ़ंक्शन के गुणों के रूप में कार्य करना (जो कि यहां हो रहा है) हमारे पास एक वर्ग विधि के सबसे करीब है। चेक करें जावास्क्रिप्ट Box2DUtility::drawWorld काम नहीं करेगा।
constructor: (@s) ->दूसरे उदाहरण में भी काम करेंगे ? (यानी, मैनुअल असाइनमेंट के बजाय@s = s)