वस्तु समानता की उलझन
समान विशेषताओं को साझा करने के बावजूद, दो समान प्रतीत होने वाली वस्तुएं जावास्क्रिप्ट में असमान रहती हैं। नीचे दिए गए कोड स्निपेट को देखते हुए, इस घटना ने कई लोगों को भ्रमित कर दिया है:
var a = {}; var b = {}; console.log(a==b); //returns false console.log(a===b); //returns false
समानता ऑपरेटरों को समझना
नियमित (==) और सख्त (===) समानता ऑपरेटरों के परिणामों के बीच असमानता प्रकार रूपांतरण में निहित है . नियमित समानता अंतर्निहित प्रकार का रूपांतरण करती है, जबकि सख्त समानता नहीं करती है। हालाँकि, इस मामले में, दोनों चर ऑब्जेक्ट हैं, इसलिए प्रकार रूपांतरण अप्रासंगिक है। उपयोग किए गए समानता ऑपरेटर की परवाह किए बिना। दूसरे शब्दों में, a == a, a == b (यदि b, a का उपनाम है), लेकिन a != c (यदि c एक अलग वस्तु है)।
निहितार्थ
इस अद्वितीय व्यवहार का ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग पर प्रभाव पड़ता है। समान गुणों वाली लेकिन अलग-अलग संदर्भ वाली दो वस्तुएं असमान मानी जाती हैं, भले ही वे एक ही वास्तविक दुनिया की इकाई का प्रतिनिधित्व करती हों।
उदाहरण के लिए, एक डेटाबेस में, दो वस्तुएं एक ही नाम, पते और एक ही व्यक्ति का प्रतिनिधित्व करती हैं फ़ोन नंबर को समान नहीं माना जाएगा, क्योंकि उनके पास अलग-अलग ऑब्जेक्ट संदर्भ हैं। ऑब्जेक्ट तुलना करते समय इससे भ्रमित करने वाले परिणाम हो सकते हैं।
Solutionsयदि दो ऑब्जेक्ट के गुणों की तुलना करना आवश्यक है, तो किसी तृतीय-पक्ष लाइब्रेरी का उपयोग करने या इसे लागू करने पर विचार करें कस्टम तुलना फ़ंक्शन जो प्रत्येक संपत्ति की व्यक्तिगत रूप से जांच करता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3