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