ECMAScript ऑब्जैक्ट अप्लीकेशन
- पिछला पृष्ठ ऑब्जैक्ट ओरिएंटेड
- अगला पृष्ठ ऑब्जैक्ट टाइप
ऑब्जैक्ट का निर्माण और नष्ट करना जैसा कि जावास्क्रिप्ट चलता है, इसके अर्थ को समझना पूरे भाषा को समझने के लिए अत्यंत महत्वपूर्ण है।
घोषणा और निर्माण
ऑब्जैक्ट का निर्माण एक नया (new) शब्द के बाद निर्माण की जाने वाली क्लास का नाम के साथ किया जाता है:
var oObject = new Object(); var oStringObject = new String();
पहली पंक्ति में, Object की क्लास का एक इंस्टैंस बनाया गया है और उसे चिह्न oObject में संग्रहित किया गया है। दूसरी पंक्ति में, String की क्लास का एक इंस्टैंस बनाया गया है और उसे चिह्न oStringObject में संग्रहित किया गया है। यदि निर्माण कार्यक्रम को कोई पारामीटर नहीं मिलता है, तो ब्रैकेट्स अनिवार्य नहीं हैं। इसलिए ऊपरी दो पंक्तियों को नीचे दिए गए तरीके से दुबारा लिखा जा सकता है:
var oObject = new Object; var oStringObject = new String;
ऑब्जैक्ट संदर्भ
पिछले अध्याय में, हमनेसंदर्भ प्रकार की संकल्पना। एससीमैस्क्रिप्ट में, ऑब्जैक्ट के भौतिक प्रतिनिधित्व को नहीं देखा जा सकता, बल्कि केवल ऑब्जैक्ट के संदर्भ को देखा जा सकता है। हर बार जब ऑब्जैक्ट को बनाया जाता है, तो चिह्न में भंडारित वास्तव में ऑब्जैक्ट का संदर्भ है, न कि ऑब्जैक्ट को आगे भी।
ऑब्जैक्ट निष्क्रिय
एससीमैस्क्रिप्ट में एक बेकार स्टोरेज इकाई संग्रह कार्यक्रम (गार्बेज कलेक्शन रूटीन) है, जिसका अर्थ है कि आवश्यकता के अभाव में ऑब्जैक्ट को नष्ट करके स्मृति को रिलीज करने की आवश्यकता नहीं है। जब ऑब्जैक्ट के लिए कोई संदर्भ नहीं होने तो, उसे निष्क्रिय (डेरीफरेंस) कहा जाता है। बेकार स्टोरेज संग्रह कार्यक्रम चलाने के दौरान, सभी निष्क्रिय ऑब्जैक्ट नष्ट किए जाते हैं। हर बार जब किसी फ़ंक्शन का कोड अपना कार्य पूरा कर जाता है, तो बेकार स्टोरेज संग्रह कार्यक्रम चलता है और सभी स्थानीय चिह्नों को रिलीज करता है। कुछ अन्य अपूर्वानुमानी के मौकों पर भी, बेकार स्टोरेज संग्रह कार्यक्रम चलता है।
ऑब्जैक्ट के सभी सन्दर्भ को null करके ऑब्जैक्ट को बाध्यता से नष्ट कर सकते हैं।उदाहरण के लिए:
var oObject = new Object; // ऑब्जैक्ट के साथ कुछ करें oObject = null;
जब वेरियेबल oObject को null कर दिया जाता है, तो पहले बनाए गए ऑब्जैक्ट के पहले सन्दर्भ नहीं है।इसका मतलब है कि अगली बार जब अनुपयोग निर्माण स्मृति संग्रहक कार्यक्रम चला जाएगा, तो इस ऑब्जैक्ट को नष्ट कर दिया जाएगा।
ऑब्जैक्ट का उपयोग करने के बाद, इसे नष्ट करके स्मृति को मुक्त करना, यह एक अच्छी आदत है।इससे इस बात का भरोसा होता है कि अब तक उपयोग में नहीं आने वाले ऑब्जैक्ट को नष्ट कर दिया गया है, इससे कार्यक्रम डिजाइन के त्रुटियाँ रोकी जा सकती है।इसके अलावा, पुराने ब्राउज़र (जैसे IE/MAC) में पूर्ण अनुपयोग नहीं किए गए स्मृति संग्रहक कार्यक्रम नहीं है, इसलिए पृष्ठ को अनुमोदित करते समय ऑब्जैक्ट को सही तरीके से नष्ट नहीं किया जा सकता है।ऑब्जैक्ट और इसके सभी गुण को नष्ट करना स्मृति का सही उपयोग करने का सबसे अच्छा तरीका है।
ध्यान:ऑब्जैक्ट की सभी सन्दर्भों को नष्ट करते समय सावधान होना चाहिए।यदि एक ऑब्जैक्ट की दो या अधिक सन्दर्भ है, तो ऑब्जैक्ट को सही तरीके से नष्ट करने के लिए इसकी सभी सन्दर्भ को null करना चाहिए।
इरी बाइंडिंग और लेट बाइंडिंग
बाइंडिंग का अर्थ है, ऑब्जैक्ट के इंटरफेस को ऑब्जैक्ट इंस्टैंस के साथ जोड़ने के तरीके।
इरी बाइंडिंग (early binding) का अर्थ है कि ऑब्जैक्ट के गुणवत्ता और विधियों को इंस्टैंसिंग करने से पहले परिभाषित करना, इससे कम्पाइलर या इंटरप्रेटर को पहले से ही मशीन कोड को ट्रांसलेशन करने की क्षमता मिलती है।जैसे Java और Visual Basic जैसे भाषाओं में, इरी बाइंडिंग के साथ, इंटेलीसेंस (डेवलपर को ऑब्जैक्ट के गुणवत्ता और विधियों की सूची देने की क्षमता) का उपयोग किया जा सकता है।ECMAScript एक मजबूत टाइप भाषा नहीं है, इसलिए इसके लिए इरी बाइंडिंग का समर्थन नहीं है।
दूसरी ओर, लेट बाइंडिंग (late binding) का अर्थ है कि कम्पाइलर या इंटरप्रेटर चलने से पहले ऑब्जैक्ट का टाइप जानते ही नहीं हैं।लेट बाइंडिंग का उपयोग करते हुए, ऑब्जैक्ट के टाइप की जाँच करने की जरूरत नहीं है, बस ऑब्जैक्ट की गुणवत्ता और विधियाँ समर्थन करते हैं या नहीं।ECMAScript में सभी वेरियेबल लेट बाइंडिंग विधि के अनुसार हैं।इससे बहुत से ऑब्जैक्ट ऑपरेशन करने की अनुमति मिलती है, बिना किसी दंड के।
- पिछला पृष्ठ ऑब्जैक्ट ओरिएंटेड
- अगला पृष्ठ ऑब्जैक्ट टाइप