मान लीजिए कि मैं सिर्फ अपने प्रश्न का उत्तर दूंगा। जिस तरह से मैंने इसे संभाला, जिस तरह से मैं कक्षाओं से अपने सभी वर्गों को विस्तारित करता हूं, "सुपर क्लास" (नाम कोई फर्क नहीं पड़ता)। उस वर्ग से मैं कक्षाओं की किसी भी संख्या का विस्तार कर सकता हूं। वैसे भी वर्ग लगता है कि यह
moduleKeywords = ['included', 'extended']
class SuperClass
@include: (obj) ->
throw('include(obj) requires obj') unless obj
for key, value of obj.prototype when key not in moduleKeywords
@::[key] = value
included = obj.included
included.apply(this) if included
@
सुंदर ज्यादा सिर्फ Spine से चुरा लिया। एक वर्ग के सुपर क्लास से बढ़ाया का एक उदाहरण:
class Sidebar extends SuperClass
# Include some other classes
@include Controller
@include EventEmitter
###
Constructor function
###
constructor: ->
# Call extended constructors
Controller.call @
EventEmitter.call @
console.log 'Sidebar instantiated'
सूचना है कि विरासत में मिला वर्ग 'निर्माता वर्ग समारोह @
/this
संदर्भ के रूप में के साथ कहा जाता है कॉल करने के लिए। मैं अभी तक वर्ग कार्यों का विस्तार करने की जरूरत नहीं है, लेकिन मुझे लगता है यह बहुत माता पिता निर्माता बुला के समान है:
someFunction: ->
ExtendedClass::someFunction.call @
इस पोस्ट को संपादित करें यदि मैं गलत हूँ। इसके अलावा वर्ग विरासत शब्दावली की मेरी कमी के लिए क्षमा करें - मैं कोई विशेषज्ञ हूँ
अद्यतन: एक भी कि स्वचालित रूप से इन्स्टेन्शियशन पर सभी शामिल कक्षाओं के लिए निर्माता कहा जाता है सुपर क्लास के लिए एक निर्माता निर्धारित कर सकते हैं। इस तरह आपको उप-वर्ग से super()
पर कॉल करने की आवश्यकता होगी। मुझे इसके साथ परेशान नहीं है हालांकि
आप इस चर्चा पर एक नजर है कर सकते हैं: https://github.com/ jashkenas/कॉफी-स्क्रिप्ट/मुद्दों/452 – qiao
सूड ... यह मेरे लिए अच्छा नहीं है – Hubro
जावास्क्रिप्ट प्रोटोटाइप विरासत का उपयोग करता है ... दृश्य के पीछे, एक श्रृंखला बनाने के लिए एकल संपत्ति 'प्रोटोटाइप' का उपयोग करता है ... आप "विरासत" हो सकता है एफ रोम एकाधिक ऑब्जेक्ट्स केवल तभी वस्तुएं प्रोटोटाइप श्रृंखला होती हैं ... उदा। ज़ेबरा शाकाहारी एनामल और शाकाहारी विस्तार कर सकता है एनिमल पशु को बढ़ाता है। – Jaider