मैं हाल ही में Node.js सीख रहा हूं। मेरे पास Node.js. में फ़ंक्शन util.inherits
फ़ंक्शन के बारे में कोई प्रश्न है क्या मैं इसे बदलने के लिए कॉफ़ीस्क्रिप्ट में extends
का उपयोग कर सकता हूं? यदि नहीं, तो उनके बीच क्या अंतर है?codefecript में 'extends' और node.js में 'util.inherits' के बीच मतभेद
उत्तर
हां, आप इसके स्थान पर extends
का उपयोग कर सकते हैं।
अंतर के लिए? के CoffeeScript पर एक नज़र साथ शुरू करते हैं:
class B extends A
के इस जावास्क्रिप्ट के लिए the JavaScript the CoffeeScript compiler produces पर नजर डालते हैं:
var B,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
B = (function(_super) {
__extends(B, _super);
function B() {
return B.__super__.constructor.apply(this, arguments);
}
return B;
})(A);
तो, __extends
B
और A
के बीच inheritence संबंध घोषित करने के लिए प्रयोग किया जाता है।
के __extends
थोड़ा अधिक readably को फिर से, CoffeeScript में करते हैं:
coffee__extends = (child, parent) ->
child[key] = val for own key, val of parent
ctor = ->
@constructor = child
return
ctor.prototype = parent.prototype
child.prototype = new ctor
child.__super__ = parent.prototype
return child
(आप देख सकते हैं कि इस compiling it back to JavaScript द्वारा एक वफादार प्रजनन है।)
यहाँ है क्या हो रहा है:
parent
पर सीधे मिली सभी कुंजियांchild
पर सेट की गई हैं।- एक नया प्रोटोटाइप कन्स्ट्रक्टर
ctor
बनाया गया है, इसके उदाहरणconstructor
गुणों को बच्चे के लिए सेट किया गया है, और इसकेprototype
माता-पिता को सेट किया गया है। - बाल वर्ग का
prototype
ctor
के उदाहरण पर सेट है।ctor
काconstructor
child
पर सेट किया जाएगा, औरctor
का प्रोटोटाइप स्वयंparent
है। - बच्चे वर्ग की
__super__
संपत्तिparent
कीprototype
पर सेट की गई है, कॉफीस्क्रिप्ट केsuper
कीवर्ड द्वारा उपयोग के लिए।
node's documentation का वर्णन करता है util.inherits
इस प्रकार है:
उत्तराधिकार दूसरे में एक निर्माता से प्रोटोटाइप तरीकों। कन्स्ट्रक्टर का प्रोटोटाइप सुपरकॉन्स्ट्रक्टर से बनाए गए एक नए ऑब्जेक्ट पर सेट किया जाएगा।
अतिरिक्त सुविधा के रूप में, सुपरकॉन्स्ट्रक्टर कन्स्ट्रक्टर के माध्यम से सुलभ होगा .super_ property।
निष्कर्ष में, यदि आप कॉफीस्क्रिप्ट के कक्षाओं का उपयोग कर रहे हैं तो आपको util.inherits
का उपयोग करने की आवश्यकता नहीं है; बस सीएस आपको टूल देता है, और आपको super
कीवर्ड जैसे बोनस मिलते हैं।
- 1. नए + के बीच रेल में मतभेद और
- 2. NUnit में Assert.True और Assert.IsTrue के बीच मतभेद?
- 3. कुकीज़ और सत्र के बीच मतभेद?
- 4. टेक्स्टमल्टीलाइन और टेक्स्ट के बीच मतभेद
- 5. आरईएसटी और जेएसओएन एपीआई के बीच मतभेद
- 6. ServletResponse और HttpServletResponseWrapper के बीच मतभेद?
- 7. स्मॉलटॉक और पायथन के बीच मतभेद?
- 8. कोको और आईफोन विकास के बीच मतभेद
- 9. रेखा और शाखा कवरेज के बीच मतभेद
- 10. CSS3 के बीच मतभेद: होवर और: फोकस?
- 11. matlab और comsol स्क्रिप्ट के बीच मतभेद?
- 12. एग्डा और इडिस के बीच मतभेद
- 13. Coroutines और `goto` के बीच मतभेद?
- 14. पैटर्न मिलान और एकीकरण के बीच मतभेद?
- 15. एनवीएल और कोलेसेस के बीच ओरेकल मतभेद
- 16. NoClassDefFoundError और ClassNotFoundException के बीच मतभेद?
- 17. क्या() .ToString के बीच मतभेद और + ""
- 18. इंडेक्सडेब: असफल और अपूर्ण के बीच मतभेद?
- 19. चींटी और मेवेन के बीच मतभेद
- 20. एमएसआईएल और जावा बाइटकोड के बीच मतभेद?
- 21. लॉग और लॉगर के बीच मतभेद?
- 22. हाँ/TRUE के बीच मतभेद?
- 23. जेवीएम कार्यान्वयन के बीच मतभेद
- 24. वेब कॉन्फ़िगरेशन में कैशिंग घटकों के बीच मतभेद
- 25. functools.partial और इसी तरह के लैम्ब्डा के बीच मतभेद?
- 26. टेम्पलेट विशेषज्ञता और कार्यों के लिए ओवरलोडिंग के बीच मतभेद?
- 27. ओएसएक्स के .pkg और .pkg.mpkg इंस्टॉलर्स के बीच मतभेद
- 28. socket.io और node.js के बीच अंतर
- 29. विभिन्न बूल प्रकारों के बीच मतभेद?
- 30. पीपीपी और पीपीपी + ग्रीनलेट में स्टैकलेस - मतभेद