जावास्क्रिप्ट में प्रोटोटाइप बनाम कंस्ट्रक्टर के माध्यम से परिभाषित तरीकों का प्रदर्शन निहितार्थ
जावास्क्रिप्ट में, सार्वजनिक कार्यों के साथ "वर्ग" बनाने के लिए दो दृष्टिकोण मौजूद हैं: प्रोटोटाइप या कंस्ट्रक्टर का उपयोग करना। विधि 1 कंस्ट्रक्टर के माध्यम से उदाहरणों को फ़ंक्शन प्रदान करती है, जबकि विधि 2 सभी उदाहरणों के बीच कार्यों को साझा करने के लिए प्रोटोटाइप का उपयोग करती है।
हालांकि विधि 2 को अक्सर अधिक कुशल होने का दावा किया जाता है, निजी उदाहरण चर के उदाहरणों से वंचित करना एक महत्वपूर्ण नुकसान है . हालाँकि, क्या विधि 1 द्वारा प्रत्येक उदाहरण के लिए डुप्लिकेट फ़ंक्शन प्रतियों का स्पष्ट निर्माण वास्तव में व्यवहार में होता है?
JsPerf बेंचमार्क से अनुभवजन्य साक्ष्य
JsPerf बेंचमार्किंग से पता चलता है कि विधि 2 (प्रोटोटाइप) ) वास्तव में गति के मामले में विधि 1 (कन्स्ट्रक्टर) से बेहतर प्रदर्शन करता है।
व्यावहारिक निहितार्थ
हालांकि यह अंतर बेंचमार्क में स्पष्ट है, वास्तविक दुनिया के अनुप्रयोगों में इसकी प्रासंगिकता संदिग्ध है . यहां तक कि बड़ी संख्या में ऑब्जेक्ट इंस्टेंशियेशन (उदाहरण के लिए, प्रति फ्रेम 10,000) वाले परिदृश्यों में भी, इस माइक्रो-ऑप्टिमाइज़ेशन से प्रदर्शन बाधाओं को कम करने की संभावना नहीं है।
सिफारिशें
यदि अनुकूलन किया जा रहा है प्रदर्शन महत्वपूर्ण है, प्रोटोटाइप के माध्यम से तरीकों की घोषणा करना उचित है। अन्यथा, विधि 1 अधिक लचीलापन प्रदान करती है और सामान्य ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग परंपराओं का पालन करती है। इसके अतिरिक्त, अंडरस्कोर उपसर्ग (जैसे, _process()) द्वारा दर्शाए गए निजी गुणों का उपयोग एनकैप्सुलेशन को बढ़ाता है और प्रत्यक्ष संशोधन को हतोत्साहित करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3