"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं ऑब्जेक्ट संदर्भ और वंशानुक्रम को संरक्षित करते हुए प्रोटोटाइप-आधारित जावास्क्रिप्ट कोड को कैसे व्यवस्थित कर सकता हूं?

मैं ऑब्जेक्ट संदर्भ और वंशानुक्रम को संरक्षित करते हुए प्रोटोटाइप-आधारित जावास्क्रिप्ट कोड को कैसे व्यवस्थित कर सकता हूं?

2024-11-20 को प्रकाशित
ब्राउज़ करें:502

How Can I Organize Prototype-Based JavaScript Code While Preserving Object References and Inheritance?

ऑब्जेक्ट संदर्भ और विरासत को संरक्षित करते हुए प्रोटोटाइप-आधारित जावास्क्रिप्ट को व्यवस्थित करना

दुविधा: संरचना को बढ़ाने के लिए कोड को पुनर्गठित करना

प्रोटोटाइप विरासत एक शक्तिशाली जावास्क्रिप्ट प्रतिमान है, लेकिन बड़े अनुप्रयोगों को प्रबंधित करना चुनौतीपूर्ण हो सकता है। अनेक कार्यों वाले कैरोसेल वर्ग पर विचार करें:

Carousel.prototype.next = function () {...}
Carousel.prototype.prev = function () {..}
Carousel.prototype.bindControls = function () {..}

बेहतर कोड संगठन के लिए रीफैक्टरिंग में कार्यों को उप-ऑब्जेक्ट्स में समूहीकृत करना शामिल हो सकता है:

Carousel.prototype.controls = {
   next: function () { ... } , 
   prev: function() { ... },
   bindControls: function () { .. }
}

हालांकि, यह परिवर्तन एक समस्या पेश करता है: इन कार्यों के भीतर "यह" कीवर्ड अब हिंडोला उदाहरण को संदर्भित नहीं करता है।

"इस" मुद्दे पर काबू पाना

बनाए रखना "यह" संदर्भ महत्वपूर्ण है, खासकर उन परिदृश्यों में जहां कक्षाएं मूल कक्षाओं से विरासत में मिलती हैं। विरासत में मिली कक्षाओं में ओवरराइडिंग फ़ंक्शंस को उचित "इस" व्यवहार को संरक्षित करना चाहिए। हिंडोला उदाहरण के लिए:

var नियंत्रण = फ़ंक्शन (नियंत्रण योग्य_ऑब्जेक्ट) { this.ref = controlable_object; }; कंट्रोल्स.प्रोटोटाइप.नेक्स्ट = फ़ंक्शन () { this.ref.foo(); } // ..

हालांकि यह समाधान "इस" मुद्दे को संबोधित करता है, यह नियंत्रण के कार्यान्वयन को ओवरराइड करने से रोकता है।

निर्भरता इंजेक्शन

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