जावास्क्रिप्ट ऑब्जेक्ट सदस्यों को एरेज़ के रूप में प्रोटोटाइप किया गया: सभी क्लास इंस्टेंसेस में साझा किया गया
जब जावास्क्रिप्ट में प्रोटोटाइप एरे, यह समझना महत्वपूर्ण है कि ये सदस्य साझा हो जाते हैं सभी वर्ग उदाहरणों के बीच। यदि आप निजी ऑब्जेक्ट सदस्यों के आदी हैं तो यह व्यवहार उल्टा लग सकता है। प्रोटोटाइप के रूप में जाना जाता है। जब आप किसी सरणी को प्रोटोटाइप में एक संपत्ति के रूप में परिभाषित करते हैं, तो यह उस प्रोटोटाइप से प्राप्त सभी ऑब्जेक्ट के लिए पहुंच योग्य हो जाता है।
उदाहरण स्क्रिप्ट इस व्यवहार को प्रदर्शित करती है:फ़ंक्शन सैंडविच() { // समस्या को ठीक करने के लिए इसे अनटिप्पणी करें //यह.सामग्री = []; }
टिप्पणी की गई पंक्ति को असंबद्ध करते हुए, प्रत्येक सैंडविच उदाहरण की अपनी निजी सामग्री सरणी होगी। हालाँकि, पंक्ति में टिप्पणी के साथ, सभी उदाहरण समान प्रोटोटाइप सरणी साझा करते हैं।
इसका मतलब है कि चीज़बर्गर में एक घटक जोड़ने से बीएलटी और मसालेदार_चिकन_सैंडविच की सामग्री भी अपडेट हो जाती है। इसे रोकने के लिए, आपको कंस्ट्रक्टर के भीतर सामग्री सरणी को परिभाषित करना होगा, जैसा कि नीचे अद्यतन उदाहरण में दिखाया गया है:
function Sandwich() { // Uncomment this to fix the problem //this.ingredients = []; }प्रोटोटाइप बनाम इंस्टेंस
function Sandwich() { this.ingredients = []; }
साझा डेटा या विधियों को परिभाषित करने के लिए प्रोटोटाइप में गुण निर्दिष्ट करें।
असाइन करें इंस्टेंस-विशिष्ट डेटा को परिभाषित करने के लिए कंस्ट्रक्टर के अंदर इंस्टेंस के गुण।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3