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

संपत्ति अभिगमकर्ता

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

Property accessors

जावास्क्रिप्ट में प्रॉपर्टी एक्सेसर्स को समझना

जावास्क्रिप्ट में, प्रॉपर्टी एक्सेसर्स ऐसे तंत्र हैं जो आपको किसी ऑब्जेक्ट के गुणों तक पहुंचने की अनुमति देते हैं। ऐसा करने के दो प्राथमिक तरीके हैं: डॉट नोटेशन और ब्रैकेट नोटेशन।

डॉट नोटेशन

डॉट नोटेशन संपत्तियों तक पहुंचने का सबसे आम तरीका है। आप बस संपत्ति के नाम के बाद एक बिंदु (.) का उपयोग करें।

ब्रैकेट नोटेशन

ब्रैकेट नोटेशन तब उपयोगी होता है जब संपत्ति का नाम गतिशील होता है या वैध पहचानकर्ता नहीं होता है (उदाहरण के लिए, इसमें रिक्त स्थान या विशेष वर्ण होते हैं)। आप वर्गाकार कोष्ठक ([]) का उपयोग करते हैं और संपत्ति के नाम को एक स्ट्रिंग के रूप में पास करते हैं

जावास्क्रिप्ट में ऑब्जेक्ट बनाना

भाषा वस्तुओं को शीघ्रता से बनाने के लिए वाक्यविन्यास प्रदान करती है जिसे ऑब्जेक्ट शाब्दिक संकेतन के रूप में जाना जाता है। ऑब्जेक्ट अक्षर घुंघराले ब्रेसिज़ द्वारा दर्शाए जाते हैं। निम्नलिखित उदाहरण बिना किसी गुण के एक खाली वस्तु बनाता है।

var animal = {};

घुंघराले ब्रेसिज़ के अंदर, गुण और उनके मान कुंजी/मूल्य जोड़े की सूची के रूप में निर्दिष्ट होते हैं।
कुंजियाँ स्ट्रिंग या पहचानकर्ता हो सकती हैं, जबकि मान कोई भी मान्य अभिव्यक्ति हो सकते हैं। कुंजी/मान जोड़े की सूची अल्पविराम से सीमांकित है, प्रत्येक कुंजी और मान को कोलन द्वारा अलग किया गया है।

निम्नलिखित उदाहरण शाब्दिक संकेतन का उपयोग करके तीन गुणों के साथ एक ऑब्जेक्ट बनाता है

पहली संपत्ति, जानवर, नंबर एक पर है।
दूसरी संपत्ति, डॉल्फ़िन, एक स्ट्रिंग का उपयोग करके निर्दिष्ट की जाती है, और एक स्ट्रिंग मान भी संग्रहीत करती है। तीसरी संपत्ति, स्तनपायी, एक खाली वस्तु संग्रहीत करती है।

var animal = {
  dolphin: 1,
  "swim": "some string",
  mammal: {
  }
};

प्रत्येक संपत्ति को एक अलग लाइन पर लिखा गया है और इंडेंट किया गया है। संपूर्ण ऑब्जेक्ट को एक पंक्ति में लिखा जा सकता था, लेकिन इस प्रारूप में कोड अधिक पठनीय है। यह कई गुणों वाली वस्तुओं या नेस्टेड वस्तुओं के लिए विशेष रूप से सच है।

जावास्क्रिप्ट ऑब्जेक्ट गुणों तक पहुँचने के लिए दो नोटेशन प्रदान करता है।

पहला और सबसे आम, डॉट नोटेशन के रूप में जाना जाता है।
डॉट नोटेशन के तहत, किसी संपत्ति तक होस्ट ऑब्जेक्ट का नाम देकर, उसके बाद एक अवधि (या बिंदु) देकर, उसके बाद संपत्ति का नाम देकर पहुंचा जाता है।

डॉट नोटेशन

डॉट नोटेशन संपत्तियों तक पहुंचने का सबसे आम तरीका है। आप बस संपत्ति के नाम के बाद एक बिंदु (.) का उपयोग करें। उदाहरण के लिए:

निम्नलिखित उदाहरण दिखाता है कि कैसे डॉट नोटेशन का उपयोग किसी संपत्ति से पढ़ने और लिखने के लिए किया जाता है। यदि object.dolphin
प्रारंभ में मान एक रखा, फिर इस कथन को निष्पादित करने के बाद इसका मान दो हो जाएगा।

  • ध्यान दें कि यदि जानवर.डॉल्फ़न का पहले से ही कोई मूल्य नहीं है, तो यह अपरिभाषित होगा।
animal.dolphin = animal.dolphin   1;

ऑब्जेक्ट गुणों तक पहुंचने के लिए सिंटैक्स को ब्रैकेट नोटेशन के रूप में जाना जाता है। ब्रैकेट नोटेशन में, ऑब्जेक्ट नाम के बाद स्क्वायर ब्रैकेट्स का एक सेट आता है।
वर्ग कोष्ठक के अंदर, संपत्ति का नाम स्ट्रिंग के रूप में निर्दिष्ट किया गया है।
ब्रैकेट नोटेशन का उपयोग करने के लिए डॉट नोटेशन का पिछला उदाहरण नीचे फिर से लिखा गया है। हालांकि कोड अलग दिख सकता है, यह कार्यात्मक रूप से पिछले उदाहरण के बराबर है।

object["dolphin"] = object["dolphin"]   1;

ब्रैकेट नोटेशन, डॉट नोटेशन की तुलना में अधिक अभिव्यंजक है क्योंकि यह एक वेरिएबल को संपत्ति के नाम के सभी या उसके हिस्से को निर्दिष्ट करने की अनुमति देता है
यह संभव है क्योंकि जावास्क्रिप्ट दुभाषिया स्वचालित रूप से वर्ग कोष्ठक के भीतर अभिव्यक्ति को एक स्ट्रिंग में परिवर्तित करता है, और फिर संबंधित संपत्ति को पुनः प्राप्त करता है।

निम्न उदाहरण दिखाता है कि ब्रैकेट नोटेशन का उपयोग करके संपत्ति के नाम तुरंत कैसे बनाए जा सकते हैं। उदाहरण में, संपत्ति का नाम foo वेरिएबल d की सामग्री को स्ट्रिंग "डॉल्फ़िन" के साथ जोड़कर बनाया गया है।

var d = "d";

object[d   "dolphin"] = "bar";

ब्रैकेट नोटेशन संपत्ति के नामों में ऐसे अक्षर शामिल करने की भी अनुमति देता है जो डॉट नोटेशन में निषिद्ध हैं
उदाहरण के लिए, निम्नलिखित कथन ब्रैकेट नोटेशन में पूरी तरह से कानूनी है। हालाँकि, यदि आपने डॉट नोटेशन में वही प्रॉपर्टी नाम बनाने का प्रयास किया, तो आपको एक सिंटैक्स त्रुटि का सामना करना पड़ेगा।

object["!@#$%^&*()."] = true;

नेस्टेड संपत्तियों तक पहुंच

नेस्टेड ऑब्जेक्ट के गुणों को चेनिंग डॉट और/या ब्रैकेट संदर्भों को एक साथ जोड़कर द्वारा एक्सेस किया जा सकता है।
उदाहरण के लिए, निम्नलिखित ऑब्जेक्ट में डॉल्फिन नामक एक नेस्टेड ऑब्जेक्ट शामिल है, जिसमें स्तनपायी नामक एक अन्य ऑब्जेक्ट शामिल है, जिसमें वर्षों नामक एक संपत्ति है जिसका मान एक है।

var animal = {
  dolphin: {
    mammal: {
      years: 1
    }
  }
};

निम्नलिखित अभिव्यक्तियाँ नेस्टेड संपत्ति, वर्षों तक पहुँचती हैं। पहली अभिव्यक्ति डॉट नोटेशन का उपयोग करती है, जबकि दूसरी अभिव्यक्ति स्क्वायर ब्रैकेट नोटेशन का उपयोग करती है।
तीसरी अभिव्यक्ति एक ही परिणाम प्राप्त करने के लिए दोनों नोटेशन को जोड़ती है

animal.dolphin.mammal.lungs;
animal["dolphin"]["mammal"]["years"];
animal["dolphin"].mammal["years"];

पिछले उदाहरण में दिखाए गए जैसे भाव अनुचित तरीके से उपयोग किए जाने पर प्रदर्शन को प्रभावित कर सकते हैं।
प्रत्येक बिंदु या ब्रैकेट अभिव्यक्ति का मूल्यांकन करने में समय लगता है।

यदि एक ही संपत्ति का उपयोग कई बार किया जाता है, तो संपत्ति को एक बार एक्सेस करना और फिर भविष्य के सभी उपयोगों के लिए मूल्य को स्थानीय चर में संग्रहीत करना अधिक समझ में आता है। निम्नलिखित उदाहरण एक लूप के भीतर कई बार बार का उपयोग करता है। हालाँकि, एक ही मान की बार-बार गणना करने में समय बर्बाद करने के बजाय, बार को एक स्थानीय चर में संग्रहीत किया जाता है।

var years = animal.dolphin.mammal.years;
var count = 0;

for (var i = 0; i 



विधियों के रूप में कार्य करता है

जब किसी फ़ंक्शन का उपयोग ऑब्जेक्ट प्रॉपर्टी के रूप में किया जाता है, तो इसे एक विधि कहा जाता है। गुणों की तरह, विधियों को भी ऑब्जेक्ट शाब्दिक नोटेशन में निर्दिष्ट किया जा सकता है। निम्नलिखित उदाहरण दिखाता है कि यह कैसे पूरा किया जाता है।

var animal = {
  sum: function(dolphin, years) {
    return dolphin   years;
  }
};

विधियाँ को डॉट और ब्रैकेट नोटेशन का उपयोग करके भी लागू किया जा सकता है।
निम्नलिखित उदाहरण दोनों नोटेशन का उपयोग करके पिछले उदाहरण से योग() विधि को आमंत्रित करता है।

डॉल्फिन.योग(1,2); डॉल्फिन["योग"](1, 2);
dolphin.sum(1, 2);
dolphin["sum"](1, 2);

गुण और विधियाँ जोड़ना

ऑब्जेक्ट शाब्दिक नोटेशन नई ऑब्जेक्ट बनाने के लिए उपयोगी है, लेकिन यह मौजूदा ऑब्जेक्ट में गुण या तरीके नहीं जोड़ सकता है। सौभाग्य से,
किसी ऑब्जेक्ट में नया डेटा जोड़ना असाइनमेंट स्टेटमेंट बनाने जितना ही सरल है

निम्नलिखित उदाहरण एक

रिक्त ऑब्जेक्ट बनाता है। दो गुण, डॉल्फ़िन और स्तनपायी, और एक
विधि, वर्ष, फिर असाइनमेंट स्टेटमेंट का उपयोग करके जोड़े जाते हैं। ध्यान दें, यह उदाहरण
डॉट नोटेशन का उपयोग करता है, लेकिन ब्रैकेट नोटेशन भी समान रूप से काम करेगा।

वर पशु = {}; पशु.डॉल्फ़िन = 1; पशु.स्तनपायी = शून्य; पशु.वर्ष = फ़ंक्शन() { वापसी "मैं 5 साल का हूं()"; };
dolphin.sum(1, 2);
dolphin["sum"](1, 2);

सारांश

ऑब्जेक्ट समग्र डेटा प्रकार हैं जो आदिम और अन्य ऑब्जेक्ट से निर्मित होते हैं। किसी वस्तु के निर्माण खंडों को आमतौर पर उसके क्षेत्र या गुण के रूप में जाना जाता है। किसी वस्तु के किसी पहलू का वर्णन करने के लिए गुणों का उपयोग किया जाता है। उदाहरण के लिए, कोई संपत्ति किसी सूची की लंबाई, कुत्ते का रंग या किसी व्यक्ति की जन्मतिथि का वर्णन कर सकती है।
इसलिए जावास्क्रिप्ट
ऑब्जेक्ट सिंटैक्स को समझना महत्वपूर्ण है, क्योंकि यह भाषा की नींव के रूप में कार्य करता है। ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग को समझने से पहले आपको ऑब्जेक्ट को समझने की आवश्यकता है।

    डॉट नोटेशन: इसका उपयोग तब करें जब संपत्ति के नाम वैध पहचानकर्ता हों।
  • ब्रैकेट नोटेशन: इसका उपयोग तब करें जब संपत्ति के नाम गतिशील हों या मान्य पहचानकर्ता न हों। वस्तुओं और उनकी संपत्तियों में प्रभावी ढंग से हेरफेर करने के लिए ये एक्सेसर्स जावास्क्रिप्ट में मौलिक हैं।
हैप्पी कोडिंग!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/irenejpopova/property-accessors-2dgk?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3