JavaScript ऑब्जेक्ट और प्रॉपर्टी एक्सेस
JavaScript में लगभग सब कुछ ऑब्जेक्ट है (प्रिमिटिव्स के अलावा: null, undefined, string, number, boolean, symbol, bigint)। ऑब्जेक्ट्स की-वैल्यू पेयर्स का संग्रह होते हैं।
ऑब्जेक्ट बनाना
<script>
// ऑब्जेक्ट लिटरल
var person = {
"name": "रमेश",
"age": 30,
"family": [{"mother": "गीता", "father": "राव"}],
"city": "बर्लिन"
};
</script>
प्रॉपर्टी एक्सेस के दो तरीके
1. डॉट नोटेशन (.)
सरल, वैध आइडेंटिफायर नामों के लिए।
<html> <body> <script>
var person = {name: "रमेश", age: 30, city: "बर्लिन"};
console.log(person.name); // "रमेश"
console.log(person.age); // 30
console.log(person.city); // "बर्लिन"
</script> </body> </html>
आउटपुट
रमेश 30 बर्लिन
2. ब्रैकेट नोटेशन ([])
डायनामिक कीज़, स्पेशल कैरेक्टर्स, रिजर्व्ड वर्ड्स के लिए।
<html> <body> <script>
var person = {
"name": "रमेश",
"age": 30,
"family": [{"mother": "गीता", "father": "राव"}],
"city": "बर्लिन"
};
// नेस्टेड प्रॉपर्टी एक्सेस
var motherName = person.family[0].mother;
document.write(motherName); // "गीता"
// ब्रैकेट नोटेशन
var city = person["city"];
document.write(city); // "बर्लिन"
// डायनामिक की
var prop = "age";
console.log(person[prop]); // 30
</script> </body> </html>
आउटपुट
गीता बर्लिन
नेस्टेड एक्सेस पैटर्न्स
<script>
var data = {
user: {
profile: {
address: {
city: "दिल्ली"
}
}
}
};
// चेनिंग (रिस्की - बीच में null/undefined होने पर एरर)
var city = data.user.profile.address.city;
// सुरक्षित: ऑप्शनल चेनिंग (ES2020)
var city = data.user?.profile?.address?.city;
// या लॉडश _.get / फंक्शन
function getPath(obj, path) {
return path.split('.').reduce((o, k) => (o || {})[k], obj);
}
</script>
महत्वपूर्ण अंतर
| पहलू | डॉट नोटेशन | ब्रैकेट नोटेशन |
|---|---|---|
| पठनीयता | बेहतर | थोड़ी कम |
| डायनामिक कीज़ | नहीं | हाँ |
| स्पेशल कैरेक्टर्स | नहीं | हाँ |
| रिजर्व्ड वर्ड्स | समस्या हो सकती है | सुरक्षित |
प्रॉपर्टी मौजूदगी जांचना
<script>
var obj = {a: 1, b: undefined};
'a' in obj; // true (प्रोटोटाइप चेन सहित)
obj.hasOwnProperty('a'); // true (केवल ऑन प्रॉपर्टी)
obj.a !== undefined; // true लेकिन b के लिए false (भले ही b मौजूद हो)
// ES2022: Object.hasOwn()
Object.hasOwn(obj, 'a'); // true
</script>