ऑब्जेक्ट

ऑब्जेक्ट की तरह, अलग-अलग तरह का डेटा होता है primitive एक ऐसा डेटा टाइप है जिसमें एक अहम अंतर: प्रिमिटिव के उलट, ऑब्जेक्ट म्यूटेबल होते हैं. किसी ऑब्जेक्ट में डेटा हो सकता है आइडेंटिफ़ायर से जुड़ा होता है, जैसे कि वैरिएबल. हालांकि, यह अपना object डेटा बनाए रखता है टाइप करें, भले ही इसमें कोई भी डेटा हो.

प्रिमिटिव को छोड़कर, सभी JavaScript वैल्यू ऑब्जेक्ट हैं. हालांकि, ऐसा इसलिए है, क्योंकि प्रिमिटिव लिटरल वैल्यू में, ऑब्जेक्ट जैसा व्यवहार दिखता है प्रोटोटाइप इनहेरिटेंस, अक्सर कहा जाता है कि JavaScript प्रभावी ढंग से वस्तुओं से बना है.

लिटरल वैल्यू, शून्य या उससे ज़्यादा की-वैल्यू के आस-पास कर्ली ब्रैकेट का जोड़ा होता है जोड़े हैं जिन्हें "प्रॉपर्टी" कहते हैं, जिसमें कोई भी JavaScript वैल्यू शामिल हो सकती है.

{
    "myProperty" : true
}

प्रॉपर्टी की कोई भी प्रतीक हो सकती है या string. किसी आइडेंटिफ़ायर को असाइन करते समय होने चाहिए, तो प्रॉपर्टी कुंजियों के रूप में इस्तेमाल की जाने वाली स्ट्रिंग अनुमान लगाने लायक होनी चाहिए और जानकारी के साथ:

let carAttributes = {
    "color" : "red"
};

carAttributes
> Object { color: "red" }

प्रॉपर्टी कुंजियों के लिए एक (') या डबल कोट में रखी गई (") स्ट्रिंग लिटरल होनी चाहिए, न कि टेंप्लेट लिटरल:

let carAttributes = {
    `keyString` : false
};
> Uncaught SyntaxError: expected property name, got template literal

प्रॉपर्टी की वैल्यू, किसी भी तरह के डेटा की हो सकती हैं. किसी ऑब्जेक्ट की प्रॉपर्टी खुद अपने-आप हो सकती हैं उनमें अपनी प्रॉपर्टी वाले ऑब्जेक्ट शामिल होते हैं:

let myObject = {
    'key' : {
        'subkey' : true,
        'othersubkey' : false
    }
};

myObject;
> Object { key: Object { subkey: true, othersubkey: false } }

जब किसी प्रॉपर्टी की वैल्यू, फ़ंक्शन होती है, तो उस प्रॉपर्टी को "तरीका" कहा जाता है.

const myObject = {
    "myProperty" : true,
    myMethod() {
        console.log( "This is a method." );
    }
}

myObject.myProperty;
> true

myObject.myMethod();
> "This is a method."

आपके पास new कीवर्ड का इस्तेमाल करके, एक ऑब्जेक्ट बनाने का भी विकल्प है:

let myObject = new Object();

पिछले उदाहरणों में, नए बनाए गए ऑब्जेक्ट की लिटरल वैल्यू असाइन की गई हैं वैरिएबल के लिए. इसकी ज़रूरत नहीं है, क्योंकि किसी भी दूसरे डेटा टाइप की तरह, आप इसका इस्तेमाल कर सकते हैं बिना किसी आइडेंटिफ़ायर वाला ऐसा ऑब्जेक्ट जहां पर ऑब्जेक्ट होने की उम्मीद हो. हालांकि, ऑब्जेक्ट लिटरल को किसी भी ऐसे कॉन्टेक्स्ट में ब्रैकेट की ज़रूरत होती है जहां इसे भ्रमित किया जा सकता है दिया गया है, जब दोनों में कर्ली ब्रेस सिंटैक्स ({}) शेयर होता है. वैरिएबल को शुरू करने के लिए इसकी ज़रूरत नहीं होती.

{ "value" : 2 }
> Uncaught SyntaxError: unexpected token: ':'

({ "value" : 2 })
> Object { value: 2 }

let valObj = { "value" : 2 };

valObj;
> Object { value: 2 }

प्रिमिटिव के उलट, कॉन्टेंट बनाने से जुड़े नतीजों में कोई खास फ़र्क़ नहीं पड़ता एक ऑब्जेक्ट जो new Object() का इस्तेमाल करके और एक लिटरल वैल्यू बना रहा है, क्योंकि दोनों में से किसी भी मामले में, एक ऐसा ऑब्जेक्ट होगा जिसमें प्रॉपर्टी Object प्रोटोटाइप. हालांकि, दोनों के बीच एक व्यावहारिक अंतर होता है सिंटैक्स इस्तेमाल न करें.

new कीवर्ड को एक खाली ऑब्जेक्ट तय करना होगा, जिसमें बाद में डेटा भरा होगा:

let myObject = new Object();

myObject.booleanValue = true;
myObject.stringValue = "My string.";

लिटरल वैल्यू वाला ऑब्जेक्ट, उसे बनाए जाने के बाद डेटा से भरा जा सकता है:

let myObject = {
    'booleanValue' : true,
    'stringValue' : "My string."
};

हालांकि, यह इसे इस्तेमाल करने की थोड़ी-बहुत सुविधा देता है, लेकिन new Object() को पुराने बनाने के लिए इस्तेमाल किया जा सकता है डेटा वैल्यू को उनसे जुड़े ऑब्जेक्ट के टाइप में एक्सपोर्ट करती हैं. जैसे, new कीवर्ड और उनके कंस्ट्रक्टर फ़ंक्शन का इस्तेमाल करना होगा. उदाहरण के लिए, यह फ़ंक्शनल तौर पर इसके बराबर है new Number( 10 ):

let myObject = new Object( 10 );

myObject;
> Number { 10 }

null और undefined वैल्यू की वजह से ऑब्जेक्ट खाली है. यह ऑब्जेक्ट एक जैसा है बिना कोई तर्क दिए new Object() का अनुरोध करना होगा.

जब आर्ग्युमेंट को पास किया जाता है, तो ऑब्जेक्ट को new Object() में लिटरल वैल्यू पास करना बिना बदले शब्दों का इस्तेमाल किया:

let myObject = new Object( { myValue : 10 } );

myObject;
> Object { myValue: 10 }

जैसा कि ऑब्जेक्ट के लिए कंस्ट्रक्टर का इस्तेमाल करके, प्रिमिटिव वैल्यू के लिए कंस्ट्रक्टर का इस्तेमाल करने के साथ किया जाता है ऑब्जेक्ट लिटरल नोटेशन के इस्तेमाल की तुलना में इसका शायद ही कोई फ़ायदा हो. कॉन्टेंट बनाते समय भी खाली ऑब्जेक्ट को बाद में वैल्यू से भरा जाता है, लेकिन डेवलपर आम तौर पर सादगी के लिए, लिटरल नोटेशन का इस्तेमाल करें.

देखें कि आपको कितना समझ आया है

किसी ऑब्जेक्ट की प्रॉपर्टी सेट करने के लिए, किस तरह के नोटेशन का इस्तेमाल किया जा सकता है?

डॉट नोटेशन
ब्रैकेट नोटेशन
पीरियड नोटेशन
लाइन नोटेशन

वैल्यू पाने के लिए, इनमें से कौनसा सिंटैक्स सही है myProp पेज चुने जा सकते हैं

myObj["myProp"];
myObj{"myProp"};
myObj("myProp");