यहाँ एक छोटा और सटीक उत्तर है:
जावास्क्रिप्ट में, प्रत्येक वस्तु में अंतर्निहित कुंजी-मूल्य जोड़े का एक गुच्छा होता है, जिसमें ऑब्जेक्ट के बारे में मेटा जानकारी होती है। जब आप for...in
किसी ऐसे ऑब्जेक्ट के लिए कंस्ट्रक्शन / लूप का उपयोग करके सभी महत्वपूर्ण-वैल्यू पेयर के माध्यम से लूप करते हैं, जो आप इस मेटा-इंफॉर्मेशन की-वैल्यू पेयर के माध्यम से भी लूप कर रहे हैं (जो आप निश्चित रूप से नहीं चाहते हैं)।
मेटा जानकारी के माध्यम hasOwnPropery(property)
से इन अनावश्यक लूपिंग का उपयोग करते हुए और सीधे जाँचता है कि पैरामीटर property
ऑब्जेक्ट में उपयोगकर्ता द्वारा दी गई संपत्ति है या नहीं। द्वारा फिल्टर-आउट , मेरा मतलब है, कि hasOwnProperty(property)
नहीं लगती है, property
वस्तु के प्रोटोटाइप श्रृंखला उर्फ मेटा जानकारी में मौजूद है।
यह true/false
उसी के आधार पर बूलियन देता है।
यहाँ एक उदाहरण है:
var fruitObject = {"name": "Apple", "shape": "round", "taste": "sweet"};
console.log(fruitObject.hasOwnProperty("name"));
console.log(Object.prototype.hasOwnProperty("toString");)
मुझे आशा है कि यह स्पष्ट है!