प्रोटोटाइप विरासत एक शक्तिशाली जावास्क्रिप्ट प्रतिमान है, लेकिन बड़े अनुप्रयोगों को प्रबंधित करना चुनौतीपूर्ण हो सकता है। अनेक कार्यों वाले कैरोसेल वर्ग पर विचार करें:
Carousel.prototype.next = function () {...} Carousel.prototype.prev = function () {..} Carousel.prototype.bindControls = function () {..}
बेहतर कोड संगठन के लिए रीफैक्टरिंग में कार्यों को उप-ऑब्जेक्ट्स में समूहीकृत करना शामिल हो सकता है:
Carousel.prototype.controls = { next: function () { ... } , prev: function() { ... }, bindControls: function () { .. } }
हालांकि, यह परिवर्तन एक समस्या पेश करता है: इन कार्यों के भीतर "यह" कीवर्ड अब हिंडोला उदाहरण को संदर्भित नहीं करता है।
बनाए रखना "यह" संदर्भ महत्वपूर्ण है, खासकर उन परिदृश्यों में जहां कक्षाएं मूल कक्षाओं से विरासत में मिलती हैं। विरासत में मिली कक्षाओं में ओवरराइडिंग फ़ंक्शंस को उचित "इस" व्यवहार को संरक्षित करना चाहिए। हिंडोला उदाहरण के लिए:
निर्भरता इंजेक्शन
var Controls = function (controllable_object) { this.ref = controllable_object; }; Controls.prototype.next = function () { this.ref.foo(); } // ..
var नियंत्रण = फ़ंक्शन (नियंत्रणीय_ऑब्जेक्ट) { this.ref = controlable_object; }; कंट्रोल्स.प्रोटोटाइप.नेक्स्ट = फ़ंक्शन () { this.ref.foo(); } // .. वर हिंडोला = फ़ंक्शन () { यह.नियंत्रक = []; }; Carousel.prototype.addController = फ़ंक्शन (नियंत्रक) { यह.नियंत्रक.पुश(नियंत्रक); }; // ..
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3