हमें यह जांचने का सही तरीका बताना होगा कि किसी वस्तु में कोई विशेष कुंजी मौजूद है या नहीं। सही रास्ते पर जाने से पहले आइए पहले गलत तरीके की जाँच करें और देखें कि वास्तव में यह कैसे गलत है।
तरीका 1:अपरिभाषित मान (गलत तरीका) के लिए जाँच कर रहा है
जावास्क्रिप्ट की अस्थिर प्रकृति के कारण, हम इस तरह की वस्तु में कुंजी के अस्तित्व की जांच करना चाह सकते हैं -
const obj = { name: 'Rahul' };
if(!obj['fName']){}
या
if(obj['fName'] === undefined){}
ये दोनों गलत तरीके हैं। क्यों?
क्योंकि इस मामले में कोई 'fName' कुंजी नहीं होती है, लेकिन मान लीजिए कि एक 'fName' मौजूद है जिसे जानबूझकर गलत या अपरिभाषित पर सेट किया गया था।
हमारा कार्य वापस आ जाना चाहिए था कि कुंजी मौजूद नहीं थी लेकिन वास्तव में उन्होंने किया था। तो ऐसे मामलों में यह तरीका विफल हो जाता है।
रास्ता 2 - इन ऑपरेटर का उपयोग करना (सही तरीका)
ES6 में अभी-अभी पेश किया गया in कीवर्ड एक पुनरावर्तनीय प्रविष्टि के लिए जाँच करता है। इसलिए, कुंजी के अस्तित्व की जांच करने के लिए, हम कुछ ऐसा कर सकते हैं -
('fName' in obj);
वे 3 - hasOwnProperty() विधि (सही तरीका) का उपयोग करना
Object.prototype.hasOwnProperty() विधि का उपयोग करके हम यह निर्धारित कर सकते हैं कि किसी वस्तु में एक कुंजी है या नहीं।
इसका सिंटैक्स है -
obj.hasOwnProperty('fName');
वे 2 और वे 3 के बीच का अंतर यह है कि वे 3 केवल उस ऑब्जेक्ट इंस्टेंस की संपत्ति की जांच करता है जिसे इसे कहा जाता है जबकि ऑब्जेक्ट इंस्टेंस गुणों के साथ-साथ विरासत में मिली संपत्तियों (यदि कोई हो) के लिए 'इन' चेक करता है।