खुला
बंद करना

जहां डेटा जेएस ऑब्जेक्ट उत्पन्न होता है। मैं नेस्टेड ऑब्जेक्ट्स, एरेज़ या JSON तक कैसे पहुंच और प्रक्रिया कर सकता हूं? यदि डेटा संरचना की "गहराई" मेरे लिए अज्ञात है तो क्या करें?

जावास्क्रिप्ट में तीन प्रकार के ऑब्जेक्ट हैं: बिल्ट-इन ऑब्जेक्ट, ब्राउज़र ऑब्जेक्ट और ऑब्जेक्ट जो प्रोग्रामर स्वयं बनाता है (चित्र 2.1)।

चावल। 2.1. जावास्क्रिप्ट में ऑब्जेक्ट

इनमें से प्रत्येक प्रकार का अपना उद्देश्य और अपनी विशेषताएं हैं।

अंतर्निर्मित वस्तुएं

नीचे हमने उन अंतर्निहित वस्तुओं को सूचीबद्ध किया है जिनके गुण और विधियाँ इन वस्तुओं को पहले परिभाषित किए बिना जावास्क्रिप्ट स्क्रिप्ट में उपलब्ध हैं:

यहां, * Microsoft JScript संस्करण 3.0 में परिभाषित अंतर्निहित ऑब्जेक्ट को दर्शाता है। यह संस्करण माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर ब्राउज़र संस्करण 4.0 में लागू किया गया है।

अंतर्निहित ऑब्जेक्ट स्ट्रिंग्स, कैलेंडर तिथियों, सरणियों, संख्याओं आदि के साथ विभिन्न संचालन करने के लिए बहुत सुविधाजनक हैं। वे प्रोग्रामर को विभिन्न नियमित संचालन जैसे स्ट्रिंग्स को परिवर्तित करने या गणितीय कार्यों की गणना करने से मुक्त करते हैं।

अंतर्निर्मित वस्तुओं के साथ कैसे काम करें?

काफी सरल। प्रोग्राम ऑब्जेक्ट के उदाहरण बनाता है और फिर ऑब्जेक्ट के गुणों और विधियों तक पहुंचता है।

एक व्यावहारिक उदाहरण के रूप में, एक HTML दस्तावेज़ पर विचार करें जो वर्तमान दिनांक और समय प्रदर्शित करता है। इस दस्तावेज़ का स्रोत पाठ सूची 2.1 में पाया जा सकता है।

सूची 2.1. फ़ाइल अध्याय2/दिनांक/दिनांक.html

दिनांक और समय दिखाएँ दिनांक और समय दिखाएँ

यहां, जावास्क्रिप्ट स्क्रिप्ट सभी C++ प्रशंसकों से परिचित नए कीवर्ड और पैरामीटर के बिना दिनांक कंस्ट्रक्टर का उपयोग करके एक डेटा ऑब्जेक्ट बनाती है:

वर डीटी; डीटी = नई तिथि();

इस तरह से बनाए गए डेटा ऑब्जेक्ट को उपयोगकर्ता की वर्तमान स्थानीय तिथि (वेब ​​​​सर्वर नहीं जहां से संबंधित HTML दस्तावेज़ डाउनलोड किया गया था) के साथ आरंभ किया गया है।

निम्न पंक्ति दिनांक टेक्स्ट स्ट्रिंग उत्पन्न करती है:

szDate = "दिनांक:" + dt.getDate() + "।" + dt.getMonth() + "।" +dt.getYear();

कैलेंडर दिनांक, माह संख्या और वर्ष संख्या का मान क्रमशः getDate, getMonth और getYear विधियों का उपयोग करके यहां प्राप्त किया जाता है। इन विधियों को वर्तमान दिनांक वाले dt ऑब्जेक्ट पर कॉल किया जाता है।

दस्तावेज़ ऑब्जेक्ट पर परिभाषित लेखन विधि का उपयोग करके दिनांक टेक्स्ट स्ट्रिंग को HTML दस्तावेज़ में आउटपुट किया जाता है:

दस्तावेज़.लिखें(szDate);

हम अपनी पुस्तक के पहले अध्याय में दिए गए उदाहरण परिदृश्यों में पहले ही इस पद्धति का उपयोग कर चुके हैं।

ध्यान दें कि दिनांक ऑब्जेक्ट में वर्तमान समय के बारे में भी जानकारी होती है। यह जानकारी getHours, getMinutes, और getSeconds विधियों (क्रमशः घंटे, मिनट और सेकंड) का उपयोग करके प्रदर्शित करने के लिए पुनर्प्राप्त की जाती है:

दस्तावेज़.लिखें ("समय:" + dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds());

Microsoft Internet Explorer संस्करण 4.0 ब्राउज़र विंडो में देखे जाने पर HTML दस्तावेज़ का स्वरूप चित्र में दिखाया गया है। 2.2.

चावल। 2.2. स्थानीय दिनांक और समय देखें

हम बाद में सामग्री का अध्ययन करते समय अन्य अंतर्निर्मित वस्तुओं के उपयोग का प्रदर्शन करेंगे।

ब्राउज़र ऑब्जेक्ट

जावास्क्रिप्ट परिप्रेक्ष्य से, ब्राउज़र वस्तुओं का एक पदानुक्रमित रूप से व्यवस्थित संग्रह प्रतीत होता है। इन ऑब्जेक्ट के गुणों और तरीकों तक पहुंच कर, आप ब्राउज़र विंडो, इस विंडो में लोड किए गए HTML दस्तावेज़, साथ ही HTML दस्तावेज़ में रखे गए अलग-अलग ऑब्जेक्ट पर विभिन्न ऑपरेशन कर सकते हैं। उदाहरण के लिए, आप HTML दस्तावेज़ों को उनमें लोड करके नई ब्राउज़र विंडो बना सकते हैं, HTML दस्तावेज़ का टेक्स्ट गतिशील रूप से उत्पन्न कर सकते हैं, HTML दस्तावेज़ में परिभाषित फॉर्म फ़ील्ड तक पहुंच सकते हैं, इत्यादि।

ब्राउज़र ऑब्जेक्ट वह इंटरफ़ेस है जिसके माध्यम से जावास्क्रिप्ट उपयोगकर्ता और ब्राउज़र विंडो में लोड किए गए HTML दस्तावेज़ के साथ-साथ ब्राउज़र के साथ भी इंटरैक्ट करता है। जावास्क्रिप्ट में, आप इन ऑब्जेक्ट से संबंधित कक्षाओं के आधार पर नई कक्षाएं नहीं बना सकते हैं, लेकिन ब्राउज़र ऑब्जेक्ट के गुण और तरीके आपके लिए उपलब्ध हैं।

ब्राउज़र ऑब्जेक्ट पदानुक्रम

ब्राउज़र ऑब्जेक्ट का पदानुक्रम चित्र में योजनाबद्ध रूप से दिखाया गया है। 2.2.

चावल। 2.2. ब्राउज़र ऑब्जेक्ट पदानुक्रम

विंडो ऑब्जेक्ट पदानुक्रम के मूल में है। जब एक HTML दस्तावेज़ को ब्राउज़र विंडो में लोड किया जाता है, तो उस ऑब्जेक्ट के भीतर अन्य ऑब्जेक्ट बनाए जाते हैं - दस्तावेज़, पैरेंट, फ़्रेम, स्थान और शीर्ष।

यदि फ्रेम के साथ एक HTML दस्तावेज़ को ब्राउज़र विंडो में लोड किया जाता है, तो प्रत्येक फ्रेम के लिए एक अलग विंडो बनाई जाती है, और यह विंडो एक विंडो ऑब्जेक्ट के रूप में बनाई जाती है।

दस्तावेज़ ऑब्जेक्ट में अन्य ऑब्जेक्ट शामिल हैं, जिनकी संरचना पूरी तरह से ब्राउज़र विंडो में लोड किए गए HTML दस्तावेज़ द्वारा निर्धारित की जाती है। ये फॉर्म, अन्य HTML दस्तावेज़ों के लिंक या उसी दस्तावेज़ के भीतर स्थानीय लिंक, ऑब्जेक्ट जो दस्तावेज़ के यूआरएल को परिभाषित करते हैं, इत्यादि हो सकते हैं।

यदि दस्तावेज़ में प्रपत्र शामिल हैं, तो उन्हें वस्तुओं के एक श्रेणीबद्ध सेट के रूप में भी दर्शाया जाता है। एक फॉर्म ऑब्जेक्ट में टेक्स्ट जानकारी दर्ज करने के लिए बटन, स्विच और फ़ील्ड जैसे ऑब्जेक्ट हो सकते हैं।

ऊपर सूचीबद्ध वस्तुओं के गुणों तक पहुंच कर, एक जावास्क्रिप्ट स्क्रिप्ट एक HTML दस्तावेज़ की विभिन्न विशेषताओं, जैसे शीर्षक, को निर्धारित कर सकती है। इसमें दस्तावेज़ में रखे गए सभी लिंक, साथ ही HTML दस्तावेज़ में परिभाषित फॉर्म फ़ील्ड की सामग्री तक पहुंच है।

वस्तुओं से संबंधित घटनाएँ

आइए ब्राउज़र ऑब्जेक्ट के संबंध में एक और बहुत महत्वपूर्ण नोट बनाएं।

ऐसी प्रत्येक वस्तु घटनाओं के एक विशिष्ट समूह से जुड़ी होती है, जिसका प्रसंस्करण जावास्क्रिप्ट स्क्रिप्ट में संभव है।

उदाहरण के लिए, ऑनलोड और ऑनअनलोड इवेंट विंडो ऑब्जेक्ट से जुड़े हुए हैं। इनमें से पहली घटना तब घटित होती है जब ब्राउज़र विंडो और उसके भीतर के सभी फ़्रेमों को लोड करना समाप्त कर देता है (यदि वे फ़्रेम विंडो में परिभाषित हैं)। दूसरी घटना तब होती है जब उपयोगकर्ता ब्राउज़र विंडो बंद करके या किसी अन्य दस्तावेज़ पर स्विच करके दस्तावेज़ समाप्त करता है।

उदाहरण के लिए, जावास्क्रिप्ट स्क्रिप्ट उपयोगकर्ता को एक स्वागत संदेश प्रदर्शित कर सकती है या ऑनलोड ईवेंट को संभालते समय अतिरिक्त जानकारी के लिए संकेत दे सकती है। जब एक विंडो समाप्त हो जाती है (जब ऑनअनलोड ईवेंट उठाया जाता है), स्क्रिप्ट उस विंडो से जुड़े किसी भी संसाधन को जारी कर सकती है या मॉनिटर स्क्रीन पर एक संदेश प्रदर्शित कर सकती है।

ईवेंट अन्य ब्राउज़र ऑब्जेक्ट से भी जुड़े होते हैं। इन वस्तुओं का वर्णन करते समय हम उनके बारे में बात करेंगे।

प्रोग्रामर द्वारा बनाई गई कक्षाओं पर आधारित ऑब्जेक्ट

C++ प्रोग्रामिंग भाषा पर शुरुआती लोगों के लिए कई किताबें एक क्लास को डेटा संरचना के रूप में कल्पना करने का सुझाव देती हैं, जहां, सामान्य फ़ील्ड के अलावा, इस डेटा के साथ काम करने के लिए फ़ंक्शन-तरीकों को परिभाषित किया जाता है। तो, जावास्क्रिप्ट भाषा में, आपकी अपनी कक्षाएं बनाने के लिए बिल्कुल विपरीत विधि का उपयोग किया जाता है।

एक जावास्क्रिप्ट क्लास एक फ़ंक्शन के रूप में बनाई गई है जो डेटा के रूप में कार्य करने वाले गुणों को परिभाषित करती है। जहाँ तक विधियों का प्रश्न है, उन्हें भी कार्यों के रूप में परिभाषित किया गया है, लेकिन अलग से।

आइए एक विशिष्ट उदाहरण दें.

मान लीजिए कि हमें एक काल्पनिक टेलीफोन डेटाबेस प्रविष्टि रखने के लिए एक क्लास बनाने की आवश्यकता है। इस वर्ग में, हमें प्रथम नाम, अंतिम नाम, फोन नंबर, पता, साथ ही अनधिकृत पहुंच से संरक्षित रिकॉर्ड के लिए एक विशेष विशेषता संग्रहीत करने के लिए गुण प्रदान करने की आवश्यकता है। इसके अतिरिक्त, किसी वस्तु की सामग्री को सारणीबद्ध रूप में प्रदर्शित करने के लिए डिज़ाइन की गई विधियों को विकसित करना आवश्यक है, जैसा कि चित्र में दिखाया गया है। 2.3.

चावल। 2.3. पोस्ट की सामग्री देखना

सबसे पहले, आइए myRecord नामक अपनी स्वयं की कक्षा बनाएँ। हो सकता है कि अभी तक इसकी कोई विधियाँ न हों, हम उन्हें बाद में जोड़ देंगे।

आवश्यक वर्ग इस प्रकार बनाया गया है:

फ़ंक्शन myRecord (नाम, परिवार, फ़ोन, पता) (यह.नाम = नाम; यह.परिवार = परिवार; यह.फ़ोन = फ़ोन; यह.पता = पता; यह.सुरक्षित = ग़लत; )

यह देखना आसान है कि हमारी कक्षा का विवरण एक कंस्ट्रक्टर फ़ंक्शन से अधिक कुछ नहीं है। कंस्ट्रक्टर पैरामीटर का उद्देश्य किसी ऑब्जेक्ट के गुणों को सेट करना है जब इसे किसी क्लास के आधार पर बनाया जाता है।

गुणों को उनके नामों के सरल संदर्भों और उसके बाद इस कीवर्ड द्वारा परिभाषित किया जाता है। यहां यह कीवर्ड इंगित करता है कि कथन उस ऑब्जेक्ट के गुणों को संदर्भित करता है जिसके लिए कंस्ट्रक्टर को बुलाया जाता है, अर्थात, जो ऑब्जेक्ट बनाया जा रहा है।

ध्यान दें कि हमारा कंस्ट्रक्टर सिक्योर नामक प्रॉपर्टी को गलत में इनिशियलाइज़ करता है। कंस्ट्रक्टर में संबंधित पैरामीटर प्रदान नहीं किया गया है, जो काफी स्वीकार्य है।

किसी विशिष्ट वर्ग का उपयोग कैसे करें?

इस वर्ग के आधार पर, आप वस्तुओं की एक मनमानी संख्या बना सकते हैं। नीचे हमने एक जावास्क्रिप्ट स्क्रिप्ट का एक टुकड़ा दिया है, जहां myRecord क्लास के आधार पर दो ऑब्जेक्ट rec1 और rec2 बनाए गए हैं:

var rec1; वर rec2; rec1 = नया myRecord ("इवान", "इवानोव", "000-322-223", "मलाया बोलश्या सेंट, 225, उपयुक्त 226"); rec2 = नया myRecord ("पेत्र", "पेत्रोव", "001-223-3334", "बोलशाया मलाया सेंट, 552, उपयुक्त 662"); rec2.secure = सत्य;

ऑब्जेक्ट नए ऑपरेटर का उपयोग करके बनाए जाते हैं, जो उन लोगों से परिचित है जिन्होंने C++ और Java में प्रोग्राम लिखे हैं। यहां हम निर्मित वस्तुओं के गुणों को आरंभ करने के लिए कंस्ट्रक्टर को पैरामीटर पास करते हैं।

जहाँ तक सुरक्षित नाम की संपत्ति का सवाल है, rec2 ऑब्जेक्ट में इसे बाद वाले के बनने के बाद आरंभ किया जाता है। इसमें true का मान लिखा होता है। हमने rec1 ऑब्जेक्ट की सुरक्षित संपत्ति को नहीं बदला है, इसलिए इसे गलत के रूप में संग्रहीत किया गया है।

अब हमारा कार्य हमारे द्वारा परिभाषित वर्ग में printTableHead, printTableEnd और printRecord नामक नई विधियों को जोड़ना है। इनमें से पहले दो तरीके क्रमशः तालिका के आरंभ और अंत खंड को HTML दस्तावेज़ में आउटपुट करते हैं, और तीसरी तालिका पंक्तियाँ रिकॉर्ड की सामग्री को दर्शाती हैं।

संक्षिप्त रूप में, myRecord वर्ग की नई परिभाषा नीचे प्रस्तुत की गई है:

फ़ंक्शन प्रिंटटेबलहेड() (...) फ़ंक्शन प्रिंटटेबलएंड() (...) फ़ंक्शन प्रिंटरिकॉर्ड() (...) फ़ंक्शन myRecord(नाम, परिवार, फ़ोन, पता) (यह.नाम = नाम; यह.परिवार = परिवार ; यह.फोन = फोन; यह.पता = पता; यह.सुरक्षित = गलत; यह.प्रिंटरिकॉर्ड = प्रिंटरिकॉर्ड; यह.प्रिंटटेबलहेड = प्रिंटटेबलहेड; यह.प्रिंटटेबलएंड = प्रिंटटेबलएंड; )

यहां, कंस्ट्रक्टर की परिभाषा से पहले, हमने अपनी कक्षा के फ़ंक्शन-तरीकों की परिभाषाएँ रखी हैं। इसके अलावा, कंस्ट्रक्टर में नई संपत्तियों की परिभाषा जोड़ी गई है:

this.printRecord = printRecord; यह.प्रिंटटेबलहेड = प्रिंटटेबलहेड; this.printTableEnd = printTableEnd;

एक बार जब क्लास इस तरह परिभाषित हो जाती है, तो आप ऑब्जेक्ट बना सकते हैं और विशिष्ट तरीकों को कॉल कर सकते हैं:

rec1.printTableHead(); rec1.printRecord(); rec1.printTableEnd(); rec2.printTableHead(); rec2.printRecord(); rec2.printTableEnd();

चित्र में ऊपर दिखाए गए दस्तावेज़ पर वापस लौटना। 2.3, हम इसका पूर्ण स्रोत पाठ प्रस्तुत करते हैं (सूची 2.2)।

सूची 2.2. फ़ाइल अध्याय2/न्यूऑब्जेक्ट/न्यूऑब्जेक्ट.html

प्रविष्टियाँ देखें प्रविष्टियाँ देखें

हमने नए वर्ग myRecord की परिभाषा और उसके तरीकों को HTML दस्तावेज़ के हेडर क्षेत्र में रखा है, जैसा कि करने की प्रथा है।

PrintTableHead विधि HTML दस्तावेज़ में तालिका शीर्षलेख को प्रिंट करती है। इस हेडर की उपस्थिति ऑब्जेक्ट के गुणों की सामग्री पर निर्भर करती है।

सबसे पहले, printTableHead विधि सुरक्षित संपत्ति की जांच करती है, इस कीवर्ड का उपयोग करके उसका मूल्य प्राप्त करती है:

var szSec = ""; if(this.secure) szSec = " (सुरक्षित)"; अन्यथा szSec = " (असुरक्षित)"। फ़ॉन्ट रंग ("लाल");

यहां इस कीवर्ड का अर्थ है कि उस ऑब्जेक्ट की प्रॉपर्टी का उपयोग करना आवश्यक है जिसके लिए printTableHead विधि को कॉल किया गया था।

यदि सुरक्षित प्रॉपर्टी की सामग्री सत्य है, तो स्ट्रिंग "(सिक्योर)" को टेक्स्ट वेरिएबल szSec में लिखा जाता है। यदि यह गलत है, तो स्ट्रिंग "(असुरक्षित)" इस वेरिएबल पर लिखी जाती है, और स्ट्रिंग का रंग लाल पर सेट होता है।

चूंकि जावास्क्रिप्ट में सभी टेक्स्ट स्ट्रिंग्स (शाब्दिक सहित) अंतर्निहित स्ट्रिंग क्लास की ऑब्जेक्ट हैं, आप उनके लिए इस क्लास में परिभाषित विधियों को कॉल कर सकते हैं। विशेष रूप से, फॉन्टकलर विधि आपको एक पंक्ति का रंग सेट करने की अनुमति देती है, जिसका हमने उपयोग किया है।

इसके बाद, printTableHead विधि स्टेटमेंट को HTML दस्तावेज़ में आउटपुट करती है

BORDER पैरामीटर के साथ, जो एक बॉर्डर वाली तालिका की परिभाषा शुरू करता है। तालिका के ऊपर शिलालेख गतिशील रूप से उत्पन्न ऑपरेटर का उपयोग करके निर्दिष्ट किया गया है। इस लेबल में उस ऑब्जेक्ट के संबंधित गुणों से प्राप्त पहला और अंतिम नाम शामिल है जिस पर प्रिंटटेबलहेड विधि को कॉल किया गया था। यह विधि तब तालिका कॉलम के लिए लेबल प्रदर्शित करती है।

PrintTableEnd विधि कथन को HTML दस्तावेज़ में प्रिंट करती है

, जो तालिका की परिभाषा को पूरा करता है, साथ ही तालिकाओं को एक दूसरे के पीछे अलग करने के लिए एक खाली पैराग्राफ भी:

फ़ंक्शन printTableEnd() ( document.write(""); दस्तावेज़.लिखें("

"); }

हमारी कक्षा में परिभाषित अंतिम विधि को printRecord कहा जाता है। यह ऑब्जेक्ट के पहले चार गुणों की सामग्री को अभी वर्णित printTableHead फ़ंक्शन द्वारा HTML दस्तावेज़ में परिभाषित तालिका से एक पंक्ति के रूप में प्रिंट करता है।

कृपया ध्यान दें कि ऑब्जेक्ट के गुणों की सामग्री इटैलिक में मुद्रित होती है, जिसके लिए हम इटैलिक विधि कहते हैं:

दस्तावेज़.लिखें(" नाम:" + this.name.italics() + "");

हम पहले ही ऊपर myRecord वर्ग की परिभाषा का वर्णन कर चुके हैं।

आइए अब हमारी स्क्रिप्ट के दूसरे भाग पर चलते हैं, जो HTML दस्तावेज़ के मुख्य भाग में स्थित है।

यहां हम myRecord क्लास के आधार पर दो ऑब्जेक्ट rec1 और rec2 बनाते हैं, और फिर rec2 ऑब्जेक्ट की सुरक्षित प्रॉपर्टी को सत्य पर सेट करते हैं।

जैसा कि आप देख सकते हैं, हमारी अपनी कक्षा का उपयोग करने से हमारे काल्पनिक टेलीफोन डेटाबेस में रिकॉर्ड की सामग्री को आरंभ करने और प्रदर्शित करने का कार्य बहुत सरल हो गया। वास्तव में, हमने इस कार्य को अपनी कक्षा में पहले से परिभाषित कई विधियों को कॉल करने तक सीमित कर दिया है।

इस अध्याय में:

जावास्क्रिप्ट में कई पूर्वनिर्धारित ऑब्जेक्ट हैं जिनका उपयोग आप स्क्रिप्ट लिखते समय कर सकते हैं। इनमें ऐरे, बूलियन, दिनांक, फ़ंक्शन, गणित, संख्या, रेगएक्सपी और स्ट्रिंग जैसे ऑब्जेक्ट, साथ ही आदिम ऑब्जेक्ट ऑब्जेक्ट शामिल हैं। भाषा के पुराने संस्करणों में, दस्तावेज़ ऑब्जेक्ट (विंडो, दस्तावेज़) को भी इसमें शामिल किया गया था, लेकिन अब इन्हें जावास्क्रिप्ट भाषा के मूल से बाहर रखा गया है, और दस्तावेज़ ऑब्जेक्ट मॉडल (डीओएम) की परिभाषा से संबंधित हैं, जो होगा बाद में चर्चा की गई। हालाँकि, इन वस्तुओं (दस्तावेज़ और विंडो) के कुछ गुण हम पहले से ही परिचित हैं।

हालाँकि, आइए आधुनिक अवधारणा में अंतर्निहित जावास्क्रिप्ट ऑब्जेक्ट पर वापस लौटें। गणित और दिनांक को छोड़कर सभी अंतर्निर्मित ऑब्जेक्ट में कंस्ट्रक्टर और प्रोटोटाइप जैसे गुण होते हैं। इनका उपयोग मौजूदा ऑब्जेक्ट में नए गुण जोड़ने के लिए किया जाता है, और इन्हें फ़ंक्शन ऑब्जेक्ट के संदर्भ में वर्णित किया जाता है।

वस्तु

सभी जावास्क्रिप्ट ऑब्जेक्ट ऑब्जेक्ट ऑब्जेक्ट के वंशज हैं। इसलिए, इस ऑब्जेक्ट के सभी गुण और तरीके किसी अन्य जावास्क्रिप्ट ऑब्जेक्ट के लिए भी उपलब्ध हैं।

ऑब्जेक्ट ऑब्जेक्ट के लिए केवल 2 गुण परिभाषित हैं - कंस्ट्रक्टर और प्रोटोटाइप। कंस्ट्रक्टर प्रॉपर्टी एक फ़ंक्शन को परिभाषित करती है जो किसी ऑब्जेक्ट का प्रोटोटाइप बनाता है - संपूर्ण फ़ंक्शन, न कि केवल उसका नाम। दूसरे शब्दों में, उस विकल्प पर विचार करें जब कुछ परीक्षण ऑब्जेक्ट परिभाषित किया गया हो और इस tmp ऑब्जेक्ट का एक उदाहरण बनाया गया हो:

फ़ंक्शन परीक्षण (संस्करण) (यह संस्करण = संस्करण; ) टीएमपी = नया परीक्षण (1);

इस मामले में, कंस्ट्रक्टर प्रॉपर्टी का उपयोग करके, आप परीक्षण ऑब्जेक्ट का स्रोत कोड देख सकते हैं (चित्र 4.6):

चेतावनी(tmp.constructor);

चावल। 4.6.

हालाँकि, इस संपत्ति की एक सीमा है: यह अंतर्निहित जावास्क्रिप्ट ऑब्जेक्ट के कोड को प्रिंट नहीं कर सकता है: ऐसे मामलों में, आउटपुट जानकारी प्रोटोटाइप फ़ंक्शन के नाम और स्ट्रिंग "" तक सीमित है।

प्रोटोटाइप संपत्ति के लिए, यह आपको वर्तमान ऑब्जेक्ट के प्रोटोटाइप फ़ंक्शन तक पहुंचने की अनुमति देता है। इस संपत्ति का उपयोग करने से ऑब्जेक्ट के प्रोटोटाइप की विशेषताओं को बदलना संभव हो जाता है। उदाहरण के लिए, आप प्रोटोटाइप प्रॉपर्टी का उपयोग करके टाइप टेस्ट के ऑब्जेक्ट के लिए एक नई प्रॉपर्टी जोड़ सकते हैं:

Test.prototype.comment = "नई टिप्पणी संपत्ति";

अब पहले से बनाए गए टीएमपी इंस्टेंस समेत टाइप टेस्ट की सभी वस्तुओं में टिप्पणी संपत्ति होगी, जिसे निम्नलिखित चेक लागू करके सत्यापित करना आसान है:

चेतावनी(tmp.comment);

इसके अलावा, अंतर्निहित जावास्क्रिप्ट ऑब्जेक्ट को इसी तरह से आधुनिक बनाना संभव है। उदाहरण के लिए, यदि हमें सरणियों में विवरण जैसी कोई संपत्ति जोड़ने की आवश्यकता है, तो हम ऐरे ऑब्जेक्ट के प्रोटोटाइप को संदर्भित करके और उसमें संबंधित संपत्ति जोड़कर ऐसा कर सकते हैं (बेशक, केवल वर्तमान परिदृश्य के भीतर!):

Array.prototype.description = "";

जहाँ तक तरीकों की बात है, ऑब्जेक्ट ऑब्जेक्ट के लिए उनमें से कुछ अधिक परिभाषित हैं - उनमें से 5 तक। ये हैं toSource, toString, watch, unwatch और valueOf, इनका संक्षिप्त विवरण तालिका 4.10 में दिया गया है।

ToString और valueOf विधियाँ लगभग सभी अंतर्निहित जावास्क्रिप्ट ऑब्जेक्ट्स पर लागू होती हैं, और रूपांतरण की आवश्यकता होने पर आमतौर पर दुभाषिया द्वारा स्वचालित रूप से कॉल की जाती हैं। जहां तक ​​toSource विधि का सवाल है, यह वास्तव में सिर्फ कंस्ट्रक्टर प्रॉपर्टी के लिए काम करता है।

शेष वॉच और अनवॉच विधियां, नेटस्केप 4 ब्राउज़र (अब मोज़िला द्वारा भी समर्थित) में पेश किए गए मालिकाना एक्सटेंशन, डिबगिंग स्क्रिप्ट के लिए हैं। चूँकि इस प्रकाशन के ढांचे के भीतर प्रोग्राम डिबगिंग के मुद्दे पर विचार नहीं किया जाएगा, इसलिए इन विधियों का वर्णन करने का कोई मतलब नहीं है। लेकिन किसी मामले में, आप ध्यान दे सकते हैं कि सी मंकी (लेकिन फ़ायरफ़ॉक्स ब्राउज़र नहीं) में एक स्क्रिप्ट डिबगर है - जावास्क्रिप्ट डिबगर।

सरणी वस्तु

सरणी चर में मानों के क्रमबद्ध सेट होते हैं, जिन्हें सुविधा के लिए एकल चर के रूप में दर्शाया जाता है। हम पहले ही एक से अधिक बार सरणियों का सामना कर चुके हैं (केवल तर्कों के सरणियों को याद रखें), अब उनके सभी गुणों और अनुप्रयोग की सूक्ष्मताओं को समझने का समय आ गया है।

अन्य प्रोग्रामिंग भाषाओं के विपरीत, जावास्क्रिप्ट में कोई सरणी डेटा प्रकार नहीं है। लेकिन यह सीमा इस तथ्य के कारण दूर हो गई है कि आप पूर्वनिर्धारित सरणी ऑब्जेक्ट - ऐरे का उपयोग कर सकते हैं। एक सरणी ऑब्जेक्ट बनाने के लिए, आप निम्न सिंटैक्स में से किसी एक का उपयोग कर सकते हैं:

ArrayName = नया Array(element1, element2, ... elementN) ArrayName = new Array(ArrayLength)

पहले मामले में, सरणी के सभी घटकों को सूचीबद्ध किया गया है, दूसरे में, तत्वों की संख्या को केवल इंगित किया गया है। किसी सरणी की घोषणा करते समय शाब्दिक अर्थों का उपयोग करना भी संभव है:

कंप्यूटर = ["पीसी", "मैक", "सन"];

सरणी तत्वों को मानों से भरने के लिए, साथ ही सामान्य रूप से सरणी तत्वों तक पहुंचने के लिए, आप तत्व सूचकांक का उपयोग कर सकते हैं। यह ध्यान में रखा जाना चाहिए कि सरणी तत्वों का सूचकांक शून्य से शुरू होता है:

वार रंग = नया ऐरे(3); रंग = "लाल"; रंग = "नीला"; रंग = "हरा";

किसी सरणी को घोषित करते समय उसे सीधे भरने के लिए जावास्क्रिप्ट भाषा द्वारा प्रदान की गई क्षमता का उपयोग करना अक्सर सुविधाजनक होता है:

वार रंग = नया ऐरे ("लाल", "नीला", "हरा");

किसी सरणी की लंबाई (सरणी बनाने वाले तत्वों की संख्या) जानने के लिए, आपको लंबाई संपत्ति का उपयोग करना चाहिए:

वर संख्या रंग = रंग.लंबाई;

लंबाई संपत्ति के अलावा, जावास्क्रिप्ट सरणियों के साथ काम करने के लिए कई अन्य गुण और तरीके भी प्रदान करता है। विशेष रूप से, ऐरे ऑब्जेक्ट के गुणों में, लंबाई के अलावा, कंस्ट्रक्टर और प्रोटोटाइप शामिल होते हैं, जो सभी ऑब्जेक्टों के लिए सार्वभौमिक होते हैं, साथ ही नियमित अभिव्यक्तियों के साथ एरे का उपयोग करने के लिए इंडेक्स और इनपुट गुण भी शामिल होते हैं।

जहाँ तक तरीकों का सवाल है, मानक toSource, toString और valueOf के अलावा, सरणियाँ अपने स्वयं के एक दर्जन से अधिक से सुसज्जित हैं, जो तालिका 4.11 में सूचीबद्ध हैं।

तालिका 4.11. सरणी वस्तु विधियाँ विधि विवरण
concatदो सरणियों को मर्ज करता है और एक नया लौटाता है
जोड़नासभी सरणी तत्वों को एक स्ट्रिंग में जोड़ता है
जल्दी से आनाकिसी सरणी से अंतिम तत्व को हटाता है और उसे वापस करता है
धकेलनासरणी के अंत में एक या अधिक तत्व जोड़ता है और उसकी नई लंबाई लौटाता है
रिवर्सकिसी सरणी के तत्वों को स्थानांतरित करता है ताकि पहला अंतिम बन जाए और इसके विपरीत
बदलावकिसी सरणी का पहला तत्व हटाता है और उसे वापस करता है
टुकड़ासरणी तत्वों का हिस्सा हटा देता है और एक नई सरणी लौटाता है
ब्याहकिसी सरणी से कोई तत्व जोड़ता और/या हटाता है
क्रम से लगानासरणी तत्वों को वर्णानुक्रम में क्रमबद्ध करता है
स्थानांतरणसरणी की शुरुआत में एक या अधिक तत्व जोड़ता है, और सरणी की नई लंबाई लौटाता है (MSIE 5.5 और 6 में, यह विधि कुछ भी नहीं लौटाती है)

आइए कुछ तरीकों को अधिक विस्तार से देखें। तो, कॉनकैट विधि का उपयोग करके आप 2 सरणियों को एक में जोड़ सकते हैं:

वार ए = नया ऐरे ("ए1", "ए2"); var b = नया ऐरे('B1', 'B2'); var ab = a.concat(b);

यहां वेरिएबल ab एक ऐरे बन जाएगा जिसमें दो ऐरे के सभी 4 तत्वों को एक साथ चिपका दिया जाएगा। यदि हम अब ऐसी सरणी में शामिल होने की विधि लागू करते हैं, तो परिणाम एक स्ट्रिंग होगी जिसमें इस सरणी के सभी तत्व अल्पविराम से अलग होंगे:

स्ट्र = ab.join(); // str प्राप्त करें = "A1,A2,B1,B2"

जहां तक ​​पॉप विधि का सवाल है, यदि हम इसे उसी सरणी पर लागू करते हैं, तो हमें उत्तर के रूप में "बी2" मिलेगा, और सरणी को पहले तीन मानों में ट्रिम कर दिया जाएगा। दूसरी ओर, शिफ्ट विधि, पहला तत्व लौटाती है (हमारे मामले में, "ए1") और सरणी के साथ भी ऐसा ही करती है, एकमात्र अंतर यह है कि शेष तत्व आगे स्थानांतरित हो जाते हैं।

यह और अन्य सरणी विधियां कैसे काम करती हैं, इसे बेहतर ढंग से समझने के लिए, लिस्टिंग 4.3 में निम्नलिखित उदाहरण पर विचार करें।

लिस्टिंग 4.3. ऐरे के साथ काम करना

उसी उदाहरण को array.html फ़ाइल में देखा जा सकता है, साथ ही आप ब्राउज़र में इसके कार्य के सभी परिणाम देख सकते हैं (चित्र 4.7 देखें)।

चावल। 4.7. स्प्लिस विधि का उपयोग करने का परिणाम: लौटाई गई सरणी और परिवर्तन

सारणियाँ बहुआयामी भी हो सकती हैं, अर्थात्। किसी सरणी का एक तत्व दूसरी सरणी हो सकता है। इस मामले में, किसी सरणी तत्व तक पहुंचने के लिए, निम्नलिखित सिंटैक्स का उपयोग करें:

Array2D='तत्व 0,0' Array2D='तत्व 0,1' ... Array2D[N][N]='तत्व N,N'

द्वि-आयामी सरणी को भरने और आउटपुट करने का एक उदाहरण arrays.html फ़ाइल में पाया जा सकता है, और लगभग सभी सरणी विधियों के लिए एक इंटरैक्टिव उदाहरण भी है।

बूलियन वस्तु

बूलियन ऑब्जेक्ट समान नाम के डेटा प्रकार के लिए एक रैपर है। बूलियन प्रकार की किसी वस्तु को परिभाषित करने के लिए, निम्नलिखित सिंटैक्स का उपयोग करें:

बूलियनओबीजे = नया बूलियन(मान)

यहां मान एक प्रारंभिक अभिव्यक्ति है जिसे आवश्यक होने पर सही या गलत पर डाला जाएगा। यदि आप 0, शून्य, गलत, NaN, अपरिभाषित, या खाली स्ट्रिंग जैसे मान निर्दिष्ट करते हैं, तो बूलियन ऑब्जेक्ट को प्रारंभ करने का परिणाम गलत होगा, और किसी अन्य मान के मामले में, परिणाम सत्य होगा।

आदिम बूलियन मान सही और गलत को बूलियन ऑब्जेक्ट के सही और गलत डेटा प्रकारों के साथ भ्रमित नहीं किया जाना चाहिए। उदाहरण के लिए, यदि आप एक वेरिएबल x घोषित करते हैं और इसे गलत से प्रारंभ किए गए बूलियन ऑब्जेक्ट का मान निर्दिष्ट करते हैं, तो तुलना करने पर भी यह सत्य का मूल्यांकन करेगा:

एक्स = नया बूलियन(झूठा); // तुलना करने पर if (x) हमें सत्य मिलता है

उसी समय, यदि आप किसी वेरिएबल को केवल आदिम डेटा प्रकार गलत निर्दिष्ट करते हैं, तो उसे बिल्कुल वही प्राप्त होगा:

एक्स = गलत; // if (x) की तुलना करने पर हमें गलत मिलता है

इस ऑब्जेक्ट के व्यावहारिक उपयोग के लिए, इसका उपयोग किसी अन्य प्रकार के मानों को बूलियन में परिवर्तित करने के लिए एक फ़ंक्शन के रूप में किया जा सकता है:

ए = 100; एक्स = बूलियन(ए); // x सत्य हो जाएगा यदि (x) (...)

लेकिन, वास्तव में, आप ऐसा करने की संभावना नहीं रखते हैं, क्योंकि, यदि आवश्यक हो, तो ऐसे परिवर्तन जावास्क्रिप्ट दुभाषिया द्वारा स्वचालित रूप से किए जाते हैं - उपरोक्त उदाहरण में, आप तुरंत "यदि (ए) ..." लिख सकते हैं, और परिवर्तन आवश्यक है इस मामले में हर हाल में कार्रवाई की जाएगी।

दिनांक वस्तु

जावास्क्रिप्ट तिथियों के साथ काम करने के लिए एक विशेष डेटा प्रकार प्रदान नहीं करता है; हालाँकि, सरणियों की तरह, एक विशेष डेटा ऑब्जेक्ट होता है। दिनांक ऑब्जेक्ट बनाने के लिए आप निम्न में से किसी भी विधि का उपयोग कर सकते हैं:

नई तिथि() नई तिथि(मिलीसेकंड) नई तिथि("Date_as_string")

पहले मामले में, वर्तमान समय के साथ एक दिनांक ऑब्जेक्ट बनाया जाता है, दूसरे में, 1 जनवरी, 1970 से बीत चुके मिलीसेकंड की संख्या निर्दिष्ट की जानी चाहिए। यदि तारीख एक स्ट्रिंग के रूप में निर्दिष्ट है, तो यह "फरवरी 28, 2005" के रूप में होनी चाहिए। वर्ष, माह, दिन आदि के लिए पूर्णांक मानों का उपयोग करके तिथि निर्धारित करना भी संभव है:

नई तिथि (वर्ष, माह, दिन [, घंटा, मिनट, दूसरा, मिलीसेकंड])

बेशक, इस मामले में, आप सेकंड और मिलीसेकंड निर्दिष्ट करने से बच सकते हैं, खासकर जब से ब्राउज़र के पुराने संस्करणों में मिलीसेकंड भी समर्थित नहीं थे। इसके अतिरिक्त, संस्करण 1.3 से पहले का जावास्क्रिप्ट 1 जनवरी 1970 से पहले की तारीखों का समर्थन नहीं करता है। पंक्ति में दर्शाए गए मानों के प्रारूप के लिए, वर्ष कोई भी 4-अंकीय संख्या है (यदि आप 2-अंकीय संख्या निर्दिष्ट करते हैं, तो 1900 इसमें जोड़ा जाएगा), माह संख्या 0 से है ( जनवरी) से 11 (दिसंबर), और दिन 0 से 31 तक है। तदनुसार, समय मान भी सीमित हैं: घंटों के लिए यह 0 से 23 तक एक पूर्णांक होगा, सेकंड और मिनटों के लिए - 0 से 59 तक, और मिलीसेकंड के लिए - 0 से 999 तक। इस प्रकार, दिनांक प्रकार के ऑब्जेक्ट के मान के रूप में, 9 मई, 2005 निर्दिष्ट करें, आपको लिखना चाहिए:

वार किसी भी दिन = नई तारीख(2005, 5, 9);

और यदि आपको वर्तमान दिनांक और समय मान प्राप्त करने की आवश्यकता है, तो किसी पैरामीटर की आवश्यकता नहीं है:

वार अब = नई तिथि();

जावास्क्रिप्ट 1.3 के बाद से, दिनांक सीमा 01/01/1970 से पहले और बाद में 100 मिलियन दिन तक हो सकती है (कुल मिलाकर लगभग 550 हजार वर्ष!)। उसी संस्करण में, सदियों के परिवर्तन से जुड़ी त्रुटियों से बचने के लिए, वर्ष को हमेशा चार अंकों के प्रारूप में इंगित करने की आवश्यकता थी।

दिनांक ऑब्जेक्ट के साथ काम करने के लिए, 2 गुण हैं - कंस्ट्रक्टर और प्रोटोटाइप, साथ ही कई विधियाँ जो आपको दिनांक (वर्ष, माह, दिन, समय) के वांछित भाग का चयन करने की अनुमति देती हैं, इसे एक प्रारूप या किसी अन्य में प्रदर्शित करती हैं, वगैरह। ये सभी तालिका 4.12 में सूचीबद्ध हैं।

तालिका 4.12. दिनांक ऑब्जेक्ट विधियाँ विधि एवं उसका वाक्यविन्यास विवरण
तारीख लें()स्थानीय समय में महीने का दिन लौटाता है
गेटडे()स्थानीय समय में सप्ताह का दिन लौटाता है
पूर्णवर्ष प्राप्त करें()स्थानीय समय में वर्ष लौटाता है
getHours()स्थानीय समय में वर्तमान समय (घंटे) लौटाता है
मिलिसेकंड्स()स्थानीय समय में वर्तमान समय (मिलीसेकंड) लौटाता है
getMinutes()स्थानीय समय में वर्तमान समय (मिनट) लौटाता है
getMonth()स्थानीय समय में वर्तमान समय (महीना) लौटाता है
getSeconds()स्थानीय समय में वर्तमान समय (सेकंड) लौटाता है
समय निकालो()वर्तमान समय को स्थानीय समय में एक मात्रा के रूप में लौटाता है
getTimezoneOffset()स्थानीय समय में जीएमटी के सापेक्ष मिनटों में ऑफसेट समय लौटाता है
getUTCDate()यूनिवर्सल टाइम में महीने का दिन लौटाता है
getUTCDay()यूनिवर्सल टाइम में सप्ताह का दिन लौटाता है
getUTCFपूर्णवर्ष()यूनिवर्सल टाइम में वर्ष लौटाता है
getUTCHours()यूनिवर्सल टाइम में वर्तमान समय (घंटे) लौटाता है
getUTCमिलीसेकंड()यूनिवर्सल टाइम में वर्तमान समय (मिलीसेकंड) लौटाता है
getUTCMinutes()यूनिवर्सल टाइम में वर्तमान समय (मिनट) लौटाता है
getUTCMonth()यूनिवर्सल टाइम में वर्तमान समय (महीना) लौटाता है
getUTCSecends()यूनिवर्सल टाइम में वर्तमान समय (सेकंड) लौटाता है
वर्ष प्राप्त करें()रगड़ा हुआ। वर्ष को संक्षिप्त (दो-अंकीय) यूनिवर्सल टाइम प्रारूप में लौटाता है
पार्स(दिनांक_स्ट्रिंग)स्थानीय समय में, 1 जनवरी 1970 से अब तक गुजरे मिलीसेकंड की संख्या को पैरामीटर में निर्दिष्ट मान पर लौटाता है
निर्धारित दिनांक(दिन)स्थानीय समय में महीने का दिन निर्धारित करता है
सेटपूर्णवर्ष(वर्ष)स्थानीय समय में वर्ष निर्धारित करता है
सेटघंटे(घंटे)स्थानीय समय में समय (घंटे) निर्धारित करता है
सेटमिलीसेकंड (मिलीसेकंड)स्थानीय समय में समय (मिलीसेकंड) निर्धारित करता है
सेटमिनट(मिनट)स्थानीय समय में समय (मिनट) निर्धारित करता है
सेटमाह(माह)स्थानीय समय में समय (महीना) निर्धारित करता है
सेटसेकंड (सेकंड)स्थानीय समय में समय (सेकंड) निर्धारित करता है
सेटटाइम (मिलीसेकंड)स्थानीय समय में किसी विशिष्ट दिनांक के लिए समय को मिलीसेकेंड में सेट करता है
setUTCDदिनांक(दिन)यूनिवर्सल टाइम में महीने का दिन सेट करता है
setUTCFपूर्णवर्ष (वर्ष)वर्ष को यूनिवर्सल टाइम में सेट करता है
सेटयूटीसीघंटे(घंटे)यूनिवर्सल टाइम में समय (घंटे) सेट करता है
सेटयूटीसीमिलीसेकंड(मिलीसेकंड)यूनिवर्सल टाइम में समय (मिलीसेकंड) सेट करता है
सेटयूटीसीमिनट (मिनट)यूनिवर्सल टाइम में समय (मिनट) सेट करता है
सेटयूटीसीमाह(महीना)यूनिवर्सल टाइम में समय (महीना) सेट करता है
setUTCSecends (सेकंड)यूनिवर्सल टाइम में समय (सेकंड) सेट करता है
सेटवर्ष(वर्ष)रगड़ा हुआ। वर्ष को स्थानीय समय में सेट करता है, वर्ष मान के लिए दो अंकों का प्रारूप स्वीकार्य है
toGMTString()रगड़ा हुआ। दिनांक को GMT समय के अनुरूप स्ट्रिंग में परिवर्तित करता है
toLocaleString()स्थानीय सिस्टम सेटिंग्स के प्रारूप के अनुरूप एक स्ट्रिंग के रूप में दिनांक और समय लौटाता है
toLocaleDateString()स्थानीय सिस्टम सेटिंग्स के प्रारूप के अनुरूप एक स्ट्रिंग के रूप में दिनांक लौटाता है
toLocaleTimeString()स्थानीय सिस्टम सेटिंग्स के अनुसार स्वरूपित स्ट्रिंग के रूप में समय लौटाता है
स्रोत तक()दिनांक ऑब्जेक्ट को शाब्दिक प्रतिनिधित्व में लौटाता है
स्ट्रिंग()स्ट्रिंग प्रतिनिधित्व में दिनांक ऑब्जेक्ट लौटाता है
toUTCString()किसी दिनांक को यूनिवर्सल टाइम प्रारूप में एक स्ट्रिंग में परिवर्तित करता है
यूटीसी (पैरामीटर)यूनिवर्सल टाइम में 1 जनवरी, 1970 से अब तक बीत चुके मिलीसेकंड की संख्या लौटाता है। पैरामीटर वर्ष, महीना और दिन, साथ ही (वैकल्पिक) घंटे, मिनट, सेकंड और मिलीसेकंड दर्शाते हैं
का मूल्य()दिनांक को आदिम मान के रूप में लौटाता है

विधियों की इतनी प्रचुरता के बावजूद, दिनांक ऑब्जेक्ट के साथ काम करना काफी सरल है: आपको बस विधियों के नामकरण के सिद्धांत को समझने की आवश्यकता है:

  • "सेट" से शुरू होने वाली विधियाँ दिनांक ऑब्जेक्ट में दिनांक और समय निर्धारित करने के लिए हैं;
  • "प्राप्त करें" से शुरू होने वाली विधियाँ दिनांक वस्तुओं से दिनांक, समय या उसके कुछ हिस्सों को पुनः प्राप्त करने के लिए हैं;
  • "से" से शुरू होने वाली विधियाँ दिनांक और समय (या उसके कुछ हिस्सों) को स्ट्रिंग मान के रूप में लौटाती हैं;
  • "यूटीसी" वाली विधियां समान विधियों से केवल इस मायने में भिन्न हैं कि वे यूनिवर्सल टाइम प्रारूप के साथ काम करती हैं (यानी, वर्तमान समय क्षेत्र के सापेक्ष ऑफसेट को ध्यान में रखते हुए ग्रीनविच मीन टाइम प्रदर्शित करती हैं)।

इस प्रकार, जो कुछ बचा है वह वांछित पैरामीटर प्राप्त करने या सेट करने के लिए दिनांक या समय के आवश्यक भाग का नाम जोड़ना या सेट करना है, यदि आवश्यक हो, तो यूटीसी का उपयोग भी करना है। खैर, जब आपको परिणाम को "मानव" रूप में प्राप्त करने की आवश्यकता हो, तो विधियों का उपयोग करें। आपको यह भी याद रखना चाहिए कि वर्ष के साथ काम करने के लिए आपको हमेशा केवल पूर्ण-प्रारूप फ़ंक्शन का उपयोग करना चाहिए (यानी getFullYear या getUTCFullYear, और getYear नहीं)।

जावास्क्रिप्ट में दिनांक की स्ट्रिंग प्रस्तुति का प्रारूप निम्न है:

सप्ताह का दिन महीना दिनांक वर्ष घंटे: मिनट: सेकंड GMT±ऑफ़सेट

तारीखों के प्रतिनिधित्व को स्पष्ट रूप से देखने के लिए, और साथ ही विचार करें कि toString जैसे फ़ंक्शन कैसे काम करते हैं, आइए देखें कि वे सभी आउटपुट के रूप में क्या लौटाते हैं। इस मामले में, किसी विशेष फ़ंक्शन के संचालन को देखने के लिए पहली बात जो दिमाग में आ सकती है वह है किसी दस्तावेज़ में टेक्स्ट आउटपुट का उपयोग करना:

दस्तावेज़.writeln(DateObject.toString()); document.writeln(DateObject.toGMTString()); // वगैरह।

लेकिन, वास्तव में, चूंकि कई कार्य हैं, इसलिए पहले से लिखना अच्छा होगा कि किस प्रकार की कार्रवाई की गई:

Document.writeln('DateObject.toString()' + DateObject.toString());

अब आइए फिर से सोचें कि हम वास्तव में इस तरह से कितनी लाइनें आउटपुट करना चाहते हैं। भले ही आप सभी पाठ संपादकों द्वारा समर्थित कॉपी-एंड-पेस्ट विधि पर विचार करें, यह इस तरह की त्रुटियों से रक्षा नहीं करेगा:

Document.writeln('DateObject.toLocaleString()' + DateObject.toString());

लेकिन जैसा कि आईबीएम का आदर्श वाक्य है, लोगों को सोचना चाहिए और मशीनों को काम करना चाहिए। तो आइए इस बारे में सोचें कि कंप्यूटर को कैसे काम करना है, साथ ही कोड के अतिरिक्त बाइट्स दर्ज करने की आवश्यकता से खुद को बचाना है, जिसके लिए हम लिस्टिंग 4.4 की ओर रुख करते हैं।

सूचीकरण 4.4. विभिन्न दिनांक प्रकार और eval फ़ंक्शन को आउटपुट करना

दिनांक ऑब्जेक्ट विधियाँ

सबसे पहले, यह printDate फ़ंक्शन को परिभाषित करता है, जो वास्तव में, दस्तावेज़ में किसी न किसी रूप में दिनांक प्रदर्शित करता है। अधिक सटीक रूप से, यह हमारे मामले में तारीख प्रदर्शित करता है, लेकिन सिद्धांत रूप में यह तब तक कुछ भी आउटपुट कर सकता है जब तक कि यह जो तर्क स्वीकार करता है वह जावास्क्रिप्ट कोड का पूरा टुकड़ा है। इस मामले में, कोड को पहले वैसे ही प्रदर्शित किया जाता है (यानी, स्ट्रिंग वैरिएबल को उसके मूल रूप में मुद्रित किया जाता है), और फिर निष्पादन परिणाम प्रदर्शित किया जाता है, जिसके लिए eval फ़ंक्शन का उपयोग किया जाता है। परिणामस्वरूप, इस तरह के फ़ंक्शन को एक बार लिखने के बाद, आप बाद में इसे पूरे दस्तावेज़ में संदर्भित कर सकते हैं, लगभग एक ही पाठ को दो बार दर्ज करने की आवश्यकता से खुद को बचा सकते हैं।

आउटपुट फ़ंक्शन के बाद दिनांक प्रकार के ऑब्जेक्ट का निर्माण होता है, जिसे 2005, तीसरा महीना (अप्रैल, चूंकि जनवरी शून्य है), पहला दिन, 14 घंटे, 30 मिनट, 45 सेकंड का मान दिया गया है। इसके बाद, दस्तावेज़ को लिखने के लिए खोला जाता है और दिनांक ऑब्जेक्ट के 6 अलग-अलग तरीकों के लिए प्रिंटडेट फ़ंक्शन को क्रमिक रूप से बुलाया जाता है। इस स्क्रिप्ट का परिणाम 6 पंक्तियाँ होंगी जिनमें विधि और उसके कार्य के परिणाम के मानों के जोड़े होंगे, जो एक कोलन द्वारा अलग किए जाएंगे (चित्र 4.8)।

चावल। 4.8. विभिन्न विधियों का उपयोग करके एक ही दिनांक आउटपुट करना

यह ध्यान दिया जाना चाहिए कि toSource विधि, जो प्रोग्राम के आंतरिक प्रतिनिधित्व में दिनांक प्रदर्शित करती है, केवल मोज़िला ब्राउज़र द्वारा समर्थित है। इसके अलावा, अन्य सभी तरीकों से तारीखें प्रदर्शित करने का प्रारूप भी अलग-अलग ब्राउज़रों में थोड़ा भिन्न हो सकता है। आप इस तरह के उदाहरण को विभिन्न देखने के कार्यक्रमों में लोड कर सकते हैं और स्वयं देख सकते हैं कि वे क्या उत्पादन करते हैं (दिनांक.एचटीएमएल फ़ाइल)।

कार्य वस्तु

एक पूर्वनिर्धारित फ़ंक्शन ऑब्जेक्ट जावास्क्रिप्ट कोड की एक पंक्ति को परिभाषित करता है जिसे एक फ़ंक्शन के रूप में निष्पादित किया जाना चाहिए। फ़ंक्शन ऑब्जेक्ट घोषित करने के लिए, निम्नलिखित सिंटैक्स का उपयोग करें:

फ़ंक्शननाम = नया फ़ंक्शन([तर्क1, तर्क2, ...तर्कएन], फ़ंक्शनबॉडी)

इस स्थिति में, किसी मौजूदा ऑब्जेक्ट के किसी भी वेरिएबल या प्रॉपर्टी का नाम फ़ंक्शन नाम के रूप में उपयोग किया जा सकता है। ऑब्जेक्ट के ईवेंट हैंडलर के मान के रूप में फ़ंक्शन प्रकार के ऑब्जेक्ट को निर्दिष्ट करना भी संभव है। मान लीजिए कि यदि हम अपना स्वयं का ईवेंट हैंडलर बनाना चाहते हैं जैसे "दस्तावेज़ लोडिंग पूर्ण" (document.onload), तो हम इसे लिख सकते हैं:

दस्तावेज़.ऑनलोड = नया फ़ंक्शन ([Argument1, ...argumentN], FunctionBody);

इस मामले में तर्क फ़ंक्शन को दिए गए पैरामीटर हैं, और फ़ंक्शन का मुख्य भाग वास्तविक कोड है जिसे इस फ़ंक्शन ऑब्जेक्ट तक पहुंचने पर निष्पादित किया जाना चाहिए। उदाहरण के लिए, आप किसी ऑब्जेक्ट का यह संस्करण लिख सकते हैं जिसका उपयोग किसी संख्या का वर्ग करने के लिए किया जाएगा:

वार स्क्वायरओबीजे = नया फ़ंक्शन ("x", "रिटर्न x*x");

यहां स्क्वायरओबीजे वेरिएबल का नाम है, x प्राप्त तर्क है, और "रिटर्न x*x" फ़ंक्शन का मुख्य भाग है। इस तथ्य पर ध्यान दें कि न केवल फ़ंक्शन का मुख्य भाग, बल्कि इसके द्वारा स्वीकार किए जाने वाले तर्क भी उद्धरण चिह्नों में संलग्न हैं, और यह भी कि ऑब्जेक्ट प्रकार का नाम, जैसा कि जावास्क्रिप्ट में प्रथागत है, बड़े अक्षर (फ़ंक्शन) के साथ लिखा गया है। .

इस तरह से बनाए गए वेरिएबल का उपयोग करना किसी अन्य प्रकार के वेरिएबल का उपयोग करने के समान है:

वर ए = 5 + स्क्वायरऑब्जेक्ट(2); // 9 प्राप्त करें

वास्तव में, Function प्रकार की एक वस्तु को हमेशा function कीवर्ड का उपयोग करके घोषित एक नियमित फ़ंक्शन के रूप में दर्शाया जा सकता है। तो, दूसरी शक्ति तक उसी वृद्धि को इस प्रकार वर्णित किया जा सकता है:

फ़ंक्शन स्क्वायरफ़ंक(x) ( रिटर्न x*x; )

तदनुसार, आप ऐसी विधि द्वारा घोषित फ़ंक्शन का उपयोग कर सकते हैं (इस मामले में, एक फ़ंक्शन अपने "शुद्ध" रूप में, और एक प्रक्रिया नहीं), इसी तरह से:

वार ए = 5 + स्क्वायरफंक(2); // हमें भी 9 मिलता है

इस प्रकार, फ़ंक्शन ऑब्जेक्ट का उपयोग करके फ़ंक्शन के रूप में किसी वेरिएबल के लिए मान निर्दिष्ट करना किसी फ़ंक्शन को घोषित करने के समान है। लेकिन एक ही समय में, इन दृष्टिकोणों में अंतर होता है: यदि स्क्वायरओबीजे एक वैरिएबल है जिसका मान फ़ंक्शन ऑब्जेक्ट का उपयोग करके बनाए गए ऑब्जेक्ट का संदर्भ है, तो स्क्वायरफ़ंक फ़ंक्शन का नाम है। तदनुसार, वे प्रोग्राम निष्पादन के दौरान भी अलग-अलग व्यवहार करते हैं: फ़ंक्शन प्रकार के ऑब्जेक्ट के लिए, दुभाषिया हर बार एक चर (हमारे मामले में, स्क्वायरओबीजे) में आने पर पूरे फ़ंक्शन कोड का मूल्यांकन करेगा, और सामान्य तरीके से घोषित कार्यों के लिए, कोड का मूल्यांकन केवल प्रथम गलियारे पर किया जाता है यदि फ़ंक्शन एक बार कार्य करता है तो यह अंतर महत्वपूर्ण नहीं हो सकता है, लेकिन फ़ंक्शन ऑब्जेक्ट से बनाए गए वेरिएबल्स का उपयोग लूप में प्रोग्राम की दक्षता को काफी कम कर देता है। इसलिए, व्यवहार में, फ़ंक्शन ऑब्जेक्ट का उपयोग बहुत दुर्लभ है, लेकिन, फिर भी, कभी-कभी वे सुविधाजनक हो सकते हैं, उदाहरण के लिए, अन्य ऑब्जेक्ट में विधियां जोड़ने के लिए।

फ़ंक्शन ऑब्जेक्ट में मानक जावास्क्रिप्ट गुण कंस्ट्रक्टर और प्रोटोटाइप के साथ-साथ स्वयं की कई संख्याएं हैं:

तर्क - फ़ंक्शन तर्कों के मापदंडों के अनुरूप एक सरणी। कैली - फ़ंक्शन के मुख्य भाग से मेल खाती है। Arguments.caller (अप्रचलित) - उस फ़ंक्शन का नाम इंगित करता है जिससे ऑब्जेक्ट को कॉल किया गया था; Arguments.length - फ़ंक्शन पैरामीटर की संख्या को इंगित करता है। लंबाई - फ़ंक्शन द्वारा अपेक्षित तर्कों की संख्या को इंगित करता है (और प्राप्त संख्या को नहीं, जैसा कि तर्क.लंबाई के मामले में है);

ध्यान
सभी तर्क गुणों को केवल फ़ंक्शन के "अंदर से" देखा जा सकता है, और, जावास्क्रिप्ट 1.4 से शुरू करके, तर्क अब फ़ंक्शन ऑब्जेक्ट की संपत्ति नहीं है, बल्कि एक स्वतंत्र स्थानीय चर है, जो किसी भी फ़ंक्शन में अंतर्निहित रूप से मौजूद है। वास्तव में, Function के लिए केवल 1 ही संपत्ति बची है - लंबाई।

गुणों के अलावा, फ़ंक्शन ऑब्जेक्ट में कई विधियाँ हैं। इस प्रकार, लागू विधि आपको एक ऑब्जेक्ट की विधि को दूसरे पर लागू करने की अनुमति देती है, और कॉल विधि आपको वर्तमान ऑब्जेक्ट के संदर्भ में किसी अन्य ऑब्जेक्ट की विधि को कॉल करने की अनुमति देती है। दुर्भाग्य से, व्यवहार में इन विधियों का कार्यान्वयन स्पष्ट रूप से वांछित होने के लिए बहुत कुछ छोड़ देता है। तो जो कुछ बचा है वह मानक जावास्क्रिप्ट विधियों toString, toSource और valueOf का उल्लेख करना है, जो फ़ंक्शन ऑब्जेक्ट के लिए भी उपलब्ध हैं।

गणित वस्तु

गणित एक अंतर्निहित जावास्क्रिप्ट ऑब्जेक्ट है जिसमें बुनियादी गणितीय स्थिरांक और विधियों और गुणों के रूप में कार्य होते हैं। उदाहरण के लिए, गणित ऑब्जेक्ट की PI संपत्ति में Pi (π) का मान होता है, जो लगभग 3.1416 के बराबर होता है, और पाप विधि निर्दिष्ट संख्या की साइन लौटाती है।

संख्या π के अतिरिक्त, गणित वस्तु में निम्नलिखित गुण हैं:

  • ई - प्राकृतिक लघुगणक का आधार (लगभग 2.718)
  • एलएन10 - 10 का प्राकृतिक लघुगणक (लगभग 2.302)
  • एलएन2 - 2 का प्राकृतिक लघुगणक (लगभग 0.693)
  • LOG10E - E का दशमलव लघुगणक (लगभग 0.434)
  • LOG2E - E का द्विआधारी लघुगणक (लगभग 1.442)
  • SQRT1_2 - 0.5 का वर्गमूल (लगभग 0.707)
  • SQRT2 - 2 का वर्गमूल (लगभग 1.414)

चूंकि गणित ऑब्जेक्ट के सभी गुण पूर्वनिर्धारित स्थिरांक हैं, इसलिए गणित प्रकार की अन्य वस्तुओं का निर्माण न केवल आवश्यक है, बल्कि अस्वीकार्य भी है, और उन्हें हमेशा उसी तरह से एक्सेस किया जाना चाहिए, उदाहरण के लिए:

वर वृत्त लंबाई = व्यास * गणित.पीआई;

गुणों के अलावा, गणित ऑब्जेक्ट उन तरीकों को भी परिभाषित करता है जो बुनियादी गणितीय कार्यों के अनुरूप होते हैं। ये सभी तालिका 4.13 में सूचीबद्ध हैं।

तालिका 4.13. जावास्क्रिप्ट गणित के तरीके विधि एवं उसका वाक्यविन्यास विवरण
पेट(संख्या)तर्क का पूर्ण मान लौटाता है
atan2(y, x)- से श्रेणी में कोई संख्या लौटाता है से?, x-अक्ष और बिंदु (x,y) के बीच के कोण (रेडियन में) का प्रतिनिधित्व करता है। ध्यान दें कि पहला तर्क Y निर्देशांक है
क्स्प(संख्या)E को निर्दिष्ट घात (घातीय लघुगणक) पर लौटाता है
छत(संख्या), मंजिल(संख्या)वह मान लौटाता है जो निकटतम बड़ा (सील) या छोटा (फ्लोर) पूर्णांक है
न्यूनतम(संख्या1, संख्या2), अधिकतम(संख्या1, संख्या2)तुलना किए जा रहे दो तर्कों की छोटी (न्यूनतम) या बड़ी (अधिकतम) संख्या लौटाएँ
पाप(संख्या),कॉस(संख्या),टैन(संख्या),असिन(संख्या),एसीओएस(संख्या),एटन(संख्या)मानक त्रिकोणमितीय कार्यों का परिणाम लौटाएँ - साइन, कोसाइन, स्पर्शज्या, आर्कसाइन, आर्ककोसाइन और आर्कटेंजेंट
पाउ(आधार, प्रतिपादक)आधार को घातांक घात पर लौटाता है
यादृच्छिक()0 और 1 के बीच एक छद्म यादृच्छिक संख्या लौटाता है
गोल संख्या)निकटतम पूर्णांक तक पूर्णांकित मान लौटाता है
वर्ग (संख्या)किसी संख्या का वर्गमूल लौटाता है

गुणों की तरह, किसी गणित ऑब्जेक्ट की विधियों का उपयोग करने के लिए, आपको ऑब्जेक्ट की प्रतियों के बजाय उसे स्वयं संदर्भित करना होगा। उदाहरण के लिए, आइए एक फ़ंक्शन लिखें जो वृत्त के क्षेत्रफल के आधार पर व्यास लौटाएगा:

फ़ंक्शन सर्कलडायम(वर्ग) (त्रिज्या = गणित.वर्ग(वर्ग / गणित.पीआई); )

व्यवहार में इसका उपयोग करने के लिए, आप शीघ्र और चेतावनी विधियों का उपयोग कर सकते हैं:

वार वर्ग = प्रॉम्प्ट ("क्षेत्र दर्ज करें", 1); var di = सर्किलडायम(वर्ग); चेतावनी ("सर्कल व्यास:" +di);

इन और गणित ऑब्जेक्ट की अन्य विधियों का संचालन Math.html फ़ाइल में देखा जा सकता है।

संख्या वस्तु

संख्या ऑब्जेक्ट सरल संख्यात्मक प्रकारों का एक ऑब्जेक्ट प्रतिनिधित्व है। इसमें संख्यात्मक स्थिरांकों के लिए विशेष गुण हैं, जैसे "अधिकतम संख्या", "संख्या नहीं" और "अनंत"। संख्या प्रकार का एक नया ऑब्जेक्ट बनाने के लिए, निम्नलिखित सिंटैक्स का उपयोग करें:

नया नंबर(मान)

व्यवहार में, संख्या ऑब्जेक्ट का सबसे आम उपयोग तर्कों को मान्य करने और रन-टाइम त्रुटियों को ट्रैक करने के लिए इसके स्थिरांक का उपयोग करना है। उदाहरण के लिए, यह जांचने के लिए कि किसी वेरिएबल का मान एक संख्या है या नहीं, आप इस विधि का उपयोग कर सकते हैं:

यदि (x!=Number.NaN);

इस मामले में, स्थिति सत्य होगी यदि चर x में एक संख्या है, क्योंकि इसकी तुलना एक विशेष मान - NaN से की जाती है, जिसका अर्थ है "संख्या नहीं"। NaN के अतिरिक्त, आप अन्य विशेष मानों का उपयोग कर सकते हैं - ये सभी संख्या ऑब्जेक्ट के गुण हैं:

  • MAX_VALUE - अधिकतम संभव संख्या
  • MIN_VALUE - न्यूनतम संभव संख्या
  • NaN - कोई संख्या नहीं
  • NEGATIVE_INFINITY - "नकारात्मक अनंत", अतिप्रवाह के मामले में लौटाया जाने वाला एक विशेष मान
  • POSITIVE_INFINITY - "सकारात्मक अनंत", अतिप्रवाह के मामले में लौटाया जाने वाला एक विशेष मान

ये सभी गुण स्थिरांक हैं, इसलिए इनका उपयोग करने के लिए आपको कोई नया नंबर ऑब्जेक्ट बनाने की आवश्यकता नहीं है। उपरोक्त गुणों के अलावा, मानक कंस्ट्रक्टर और प्रोटोटाइप गुणों को भी नंबर के लिए परिभाषित किया गया है

गुणों के अलावा, संख्या ऑब्जेक्ट में, निश्चित रूप से, विधियाँ भी होती हैं। मानक toSource, toString और valueOf तरीकों के अलावा, जावास्क्रिप्ट 1.5 ने नंबर ऑब्जेक्ट के 3 नए मूल तरीकों को पेश किया - toExponential, toFixed और toPrecision। इन सभी को किसी न किसी प्रारूप के आधार पर संख्याओं को स्ट्रिंग में बदलने के लिए डिज़ाइन किया गया है। इस प्रकार, toExponential विधि एक संख्या को एक घातांक के साथ एक संख्या के रूप में एक स्ट्रिंग में परिवर्तित करती है, toFixed विधि इसे एक स्ट्रिंग में परिवर्तित करती है जिसमें दशमलव स्थानों की एक निश्चित संख्या के साथ एक संख्या होती है, और toPrecision विधि इन विधियों में से एक का उपयोग करती है, जो इस पर निर्भर करता है संख्या और आवंटित दशमलव स्थानों की संख्या।

आइए इन विधियों को अधिक विस्तार से देखें, जिसके लिए हम उनके वाक्यविन्यास पर विचार करते हैं:

विधि([वर्णों की संख्या])

जाहिर है, सभी विधियों के लिए, अंकों की संख्या दशमलव स्थानों की संख्या को इंगित करती है, लेकिन यदि toFixed विधि के लिए डिफ़ॉल्ट मान (यानी, यदि कुछ भी निर्दिष्ट नहीं है) 0 है, तो toExponential और toPrecision के लिए यह आवश्यक दशमलव स्थानों की संख्या है संपूर्ण संख्या प्रदर्शित करने के लिए. इन सभी विधियों के संचालन और अंतर को बेहतर ढंग से समझने के लिए, आइए लिस्टिंग 4.5 के उदाहरण का उपयोग करके उन्हें देखें:

लिस्टिंग 4.5. एक्सपोनेंशियल, फिक्स्ड और प्रिसिजन तरीके

संख्या वस्तु के तरीके

यहां हमने फिर से (जैसा कि लिस्टिंग 4.4 में है) एक फ़ंक्शन का उपयोग किया है जो पहले अभिव्यक्ति को प्रिंट करता है और फिर उसकी व्याख्या के परिणाम को प्रिंट करता है, लेकिन इस मामले में हमने इसे प्रिंटनंबर कहा है। इसके बाद वेरिएबल की वास्तविक घोषणा आती है जिस पर गणना की जाएगी। इस मामले में, हमने इसे संख्या प्रकार की एक वस्तु के रूप में घोषित किया, हालाँकि, वास्तव में, हम खुद को एक साधारण चर घोषणा (x = 12.45678) तक सीमित कर सकते थे। अंत में, दस्तावेज़ को लिखने के लिए खोला जाता है और वेरिएबल x का मान पहले बिना किसी स्पष्ट रूपांतरण के इसमें मुद्रित किया जाता है (लेकिन हम पहले से ही जानते हैं कि वास्तव में toString() विधि स्वचालित रूप से यहां लागू होती है), जिसके बाद सभी तीन विधियां विचाराधीन हैं पहले वर्णों की संख्या निर्दिष्ट किए बिना, और फिर पैरामीटर 2 और 4 के साथ कॉल किया जाता है। इस स्क्रिप्ट का परिणाम 10 पंक्तियाँ होंगी जिनमें "अभिव्यक्ति: प्रसंस्करण परिणाम" जोड़े होंगे (चित्र 4.9)।

चावल। 4.9.

निष्कर्ष में, यह एक बार फिर ध्यान देने योग्य है कि ये विधियाँ केवल जावास्क्रिप्ट 1.5 में दिखाई दीं और, तदनुसार, संस्करण 7.0 तक नेटस्केप 4, एमएसआईई 4/5 और ओपेरा ब्राउज़र में काम नहीं करती हैं। साथ ही, वे गणित ऑब्जेक्ट की राउंड() विधि की तुलना में आउटपुट में संख्याओं को स्वरूपित करने में अधिक लचीलापन प्रदान करते हैं।

2011-08-01 // कोई प्रश्न, सुझाव, टिप्पणियाँ? तुम कर सकते हो

XHTML/HTML4 के दिनों में, डेवलपर्स के पास कुछ ही विकल्प थे जिनका उपयोग वे मनमाने DOM-संबंधित डेटा को संग्रहीत करने के लिए कर सकते थे। आप अपनी स्वयं की विशेषताओं का आविष्कार कर सकते हैं, लेकिन यह जोखिम भरा था - आपका कोड मान्य नहीं होगा, ब्राउज़र आपके डेटा को अनदेखा कर सकते हैं, और यदि नाम मानक HTML विशेषताओं से मेल खाता है तो यह समस्याएं पैदा कर सकता है।

इसलिए, अधिकांश डेवलपर्स क्लास या रिले विशेषताओं पर अड़े रहे क्योंकि वे अतिरिक्त पंक्तियों को संग्रहीत करने का एकमात्र उचित तरीका थे। उदाहरण के लिए, मान लें कि हम ट्विटर संदेश टाइमलाइन की तरह संदेशों को प्रदर्शित करने के लिए एक विजेट बना रहे हैं। आदर्श रूप से, जावास्क्रिप्ट को कोड को दोबारा लिखे बिना कॉन्फ़िगर करने योग्य होना चाहिए, इसलिए हम क्लास विशेषता में उपयोगकर्ता आईडी को इस तरह परिभाषित करते हैं:

हमारा जावास्क्रिप्ट कोड आईडी msglist वाले तत्व की तलाश करेगा। स्क्रिप्ट का उपयोग करके, हम user_ से शुरू होने वाली कक्षाओं की खोज करेंगे, और हमारे मामले में "बॉब" उपयोगकर्ता आईडी होगा, और हम उस उपयोगकर्ता के सभी संदेश प्रदर्शित करेंगे।

मान लीजिए कि हम संदेशों की अधिकतम संख्या भी निर्धारित करना चाहेंगे, और छह महीने (180 दिन) से अधिक पुराने संदेशों को छोड़ देंगे:

हमारी क्लास विशेषता बहुत जल्दी अव्यवस्थित हो जाती है - गलती करना आसान है, और जावास्क्रिप्ट में स्ट्रिंग्स को पार्स करना अधिक से अधिक कठिन हो जाता है।

HTML5 डेटा विशेषताएँ

सौभाग्य से, HTML5 ने कस्टम विशेषताओं का उपयोग करने की क्षमता पेश की। उदाहरण के लिए, आप डेटा- के पहले लगे किसी भी लोअरकेस नाम का उपयोग कर सकते हैं:

कस्टम डेटा विशेषताएँ:

  • ये स्ट्रिंग हैं - आप इनमें कोई भी जानकारी संग्रहीत कर सकते हैं जिसे स्ट्रिंग के रूप में दर्शाया या एन्कोड किया जा सकता है, जैसे कि JSON। टाइप कास्टिंग जावास्क्रिप्ट का उपयोग करके की जानी चाहिए
  • उन मामलों में उपयोग किया जाना चाहिए जहां कोई उपयुक्त HTML5 तत्व या विशेषताएँ नहीं हैं
  • केवल पृष्ठ देखें। माइक्रोफ़ॉर्मेट के विपरीत, उन्हें खोज इंजन और क्रॉलर जैसे बाहरी सिस्टम द्वारा अनदेखा किया जाना चाहिए
जावास्क्रिप्ट प्रोसेसिंग उदाहरण #1: getAttribute और setAttribute

सभी ब्राउज़र आपको getAttribute और setAttribute तरीकों का उपयोग करके डेटा विशेषताएँ प्राप्त करने और बदलने की अनुमति देते हैं:

वर msglist = document.getElementById("msglist"); var शो = msglist.getAttribute('डेटा-सूची-आकार'); msglist.setAttribute('डेटा-सूची-आकार', +शो+3);

यह काम करता है, लेकिन इसका उपयोग केवल पुराने ब्राउज़र के साथ संगतता बनाए रखने के लिए किया जाना चाहिए।

जावास्क्रिप्ट में प्रसंस्करण का उदाहरण संख्या 2: jQuery लाइब्रेरी की डेटा() विधि

jQuery 1.4.3 के अनुसार, डेटा() विधि HTML5 डेटा विशेषताओं को संभालती है। आपको डेटा-उपसर्ग को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता नहीं है, इसलिए इस तरह का कोड काम करेगा:

वर संदेशसूची = $('#msglist'); var शो = msglist.data("सूची-आकार"); msglist.data("सूची-आकार", दिखाएँ+3);

हालाँकि, ध्यान रखें कि jQuery ऐसी विशेषताओं के मानों को उचित प्रकारों (बूलियन, संख्याएँ, ऑब्जेक्ट, सरणियाँ, या शून्य) में बदलने का प्रयास करता है और DOM को प्रभावित करेगा। setAttribute के विपरीत, डेटा() विधि भौतिक रूप से डेटा-सूची-आकार विशेषता को प्रतिस्थापित नहीं करेगी - यदि आप jQuery के बाहर इसका मान जांचते हैं - तो यह अभी भी 5 होगा।

जावास्क्रिप्ट प्रोसेसिंग का उदाहरण संख्या 3: डेटा सेट के साथ काम करने के लिए एपीआई

अंत में, हमारे पास HTML5 डेटासेट के साथ काम करने के लिए एक एपीआई है जो एक DOMStringMap ऑब्जेक्ट लौटाता है। यह याद रखना महत्वपूर्ण है कि डेटा विशेषताओं को बिना डेटा के किसी ऑब्जेक्ट में मैप किया जाता है- उपसर्ग, नामों से हाइफ़न हटा दिए जाते हैं, और नाम स्वयं कैमलकेस में परिवर्तित हो जाते हैं, उदाहरण के लिए:

उत्तरदायी ठहराने के लिए नाम डेटासेट एपीआई नाम
डेटा-उपयोगकर्ता उपयोगकर्ता
डेटा-अधिकतम अधिकतम
डेटा-सूची-आकार सूचीआकार

हमारा नया कोड:

वर msglist = document.getElementById("msglist"); var शो = msglist.dataset.listSize; msglist.dataset.listSize = +show+3;

यह एपीआई सभी आधुनिक ब्राउज़रों द्वारा समर्थित है, लेकिन IE10 और उससे नीचे के ब्राउज़र द्वारा समर्थित नहीं है। इन ब्राउज़रों के लिए एक समाधान है, लेकिन यदि आप पुराने ब्राउज़रों के लिए लिख रहे हैं तो jQuery का उपयोग करना संभवतः अधिक व्यावहारिक है।

जावास्क्रिप्ट में दिनांक और समय के साथ काम करते समय, आप दिनांक ऑब्जेक्ट का उपयोग करते हैं। मुझे लगता है कि यह बताने की कोई जरूरत नहीं है कि आपको कितनी बार तारीख और समय के साथ काम करना पड़ता है। और इस लेख में आप सीखेंगे कि जावास्क्रिप्ट में यह कैसे करें।

आइए, हमेशा की तरह, दिनांक ऑब्जेक्ट के कंस्ट्रक्टर के साथ शुरुआत करें। उनमें से चार हैं. पहला एक पैरामीटर रहित कंस्ट्रक्टर है, और यह वर्तमान समय और तारीख लौटाता है:

वार तिथि = नई तिथि();
दस्तावेज़.लिखें(तारीख);

परिणामस्वरूप, आपको कुछ इस तरह दिखाई देगा: "गुरु 14 अक्टूबर 2010 11:42:06 GMT+0400"।

दिनांक ऑब्जेक्ट के लिए दूसरा कंस्ट्रक्टर एक-पैरामीटर कंस्ट्रक्टर है। इस पैरामीटर में 01/01/1970 (यूनिक्स युग के जन्म) के बाद से बीत चुके मिलीसेकंड की संख्या शामिल है। उदाहरण के लिए, इस तरह:

वार तिथि = नई तिथि(135253235);
दस्तावेज़.लिखें(तारीख);

परिणामस्वरूप, आपको निम्नलिखित दिखाई देगा: "शुक्र जनवरी 02 1970 16:34:13 जीएमटी+0300"।

निम्नलिखित कंस्ट्रक्टर आपको निम्नलिखित मापदंडों के साथ एक दिनांक ऑब्जेक्ट बनाने की अनुमति देता है: वर्ष, महीना और दिन:

वार तिथि = नई तिथि(2010, 0, 12);
दस्तावेज़.लिखें(तारीख);

परिणाम: "मंगलवार 12 जनवरी 2010 00:00:00 जीएमटी+0300"। यह भी ध्यान दें कि महीना 0 जनवरी है और महीना 11 दिसंबर है।

और जावास्क्रिप्ट में दिनांक वर्ग के लिए अंतिम कंस्ट्रक्टर आपको सभी दिनांक और समय मापदंडों के साथ एक दिनांक ऑब्जेक्ट बनाने की अनुमति देता है: वर्ष, महीना, दिन, घंटे, मिनट और सेकंड।

वार तिथि = नई तिथि(2010, 0, 12, 23, 45, 12);
दस्तावेज़.लिखें(तारीख);

आपको यह पंक्ति मिलेगी: "मंगलवार 12 जनवरी 2010 23:45:11 GMT+0300"। ये सभी जावास्क्रिप्ट दिनांक ऑब्जेक्ट कंस्ट्रक्टर हैं जो डेवलपर्स ने हमें प्रदान किए हैं।

दिनांक वर्ग में कोई विशेष गुण नहीं हैं, तो चलिए सीधे तरीकों पर चलते हैं। आइए तुरंत उन तरीकों के समूह से शुरुआत करें जो बिल्कुल समान काम करते हैं, लेकिन उनमें से प्रत्येक अपना स्वयं का दिनांक और समय तत्व लौटाता है:

वार तिथि = नई तिथि();
दस्तावेज़.लिखें ("वर्ष -" + दिनांक.getFullYear() + "
");
document.write("माह - " + date.getMonth() + "
");
document.write("संख्या - " + date.getDate() + "
");
document.write("सप्ताह का दिन -" + date.getDay() + "
");
दस्तावेज़.लिखें ("घंटा -" + दिनांक.getHours() + "
");
document.write("मिनट - " + date.getMinutes() + "
");
document.write("दूसरा - " + date.getSeconds() + "
");
दस्तावेज़.लिखें ("मिलीसेकंड -" + दिनांक.गेटमिलीसेकंड() + "
");
document.write("01/01/1970 के बाद से बीत चुके मिलीसेकंड की संख्या - " + date.getTime() + "
");

इस स्क्रिप्ट को चलाने से, आप तुरंत समझ जाएंगे कि इनमें से प्रत्येक विधि क्या करती है। एकमात्र बात जो मैं नोट करना चाहूंगा वह यह है कि सप्ताह के दिनों की संख्या भी शून्य से शुरू होती है। इसके अलावा, रविवार का सूचकांक 0 है, और शनिवार का सूचकांक 6 है।

समान विधियाँ हैं, लेकिन दिनांक और समय को ग्रीनविच मीन टाइम में दिखाया जाता है। आइए यह कोड लिखें:

वार तिथि = नई तिथि();
document.write("वर्ष - " + date.getUTCFullYear() + "
");
document.write("माह - " + date.getUTCMonth() + "
");
document.write("संख्या -" + date.getUTCDate() + "
");
document.write("सप्ताह का दिन - " + date.getUTCDay() + "
");
document.write("घंटा - " + date.getUTCHours() + "
");
document.write("मिनट - " + date.getUTCMinutes() + "
");
document.write("दूसरा - " + date.getUTCSecends() + "
");
document.write("मिलीसेकंड -" + date.getUTCMilliconditions() + "
");

इस स्क्रिप्ट को चलाकर, आप ग्रीनविच में वर्तमान दिनांक और समय का पता लगा लेंगे।

get() विधियों के विपरीत सेट() विधियाँ हैं। यदि पहला कुछ मान लौटाता है, तो दूसरा, इसके विपरीत, उन्हें बदल देता है। दरअसल, मैं यह स्क्रिप्ट उपलब्ध नहीं करा सका, लेकिन कोई प्रश्न न रह जाए, आइए इसे करते हैं:

वार तिथि = नई तिथि();
दिनांक.सेटपूर्णवर्ष(1990);
दिनांक.सेटमाह(11);
दिनांक.सेट दिनांक(15);
दिनांक.सेटघंटे(9);
दिनांक.सेटमिनट(20);
date.setSeconds(0);
दिनांक.सेटमिलीसेकंड(10);
दस्तावेज़.लिखें(तारीख);

मुझे आशा है कि आपने देखा होगा कि सेटडे() विधि मौजूद नहीं है। इसका मतलब यह है कि साल, महीने और तारीख के आधार पर सप्ताह का दिन चुना जाता है।

ग्रीनविच के लिए भी ऐसी ही विधियाँ हैं। केवल UTC उपसर्ग जोड़ा जाता है, उदाहरण के लिए, महीने को बदलने के लिए setUTCMonth() विधि का उपयोग किया जाता है।

और अंतिम विधि setTime() है। 01/01/1970 के बाद से बीत चुके मिलीसेकंड की संख्या को एक पैरामीटर के रूप में लेता है:

दिनांक.सेटटाइम(39293012);
दस्तावेज़.लिखें(तारीख);

परिणामस्वरूप, आप यह देखेंगे: "गुरु जनवरी 01 1970 13:54:53 जीएमटी+0300"।

यह जावास्क्रिप्ट में डेट ऑब्जेक्ट के सभी कंस्ट्रक्टर और तरीके हैं।

पाठ में जावास्क्रिप्ट ऑब्जेक्ट के विषय शामिल होंगे। हम कस्टम ऑब्जेक्ट के बारे में बात करेंगे: जावास्क्रिप्ट में एक ऑब्जेक्ट बनाना, ऑब्जेक्ट गुणों और विधियों के साथ-साथ जावास्क्रिप्ट प्रोटोटाइप के साथ काम करना। स्थान, नेविगेटर, स्क्रीन ऑब्जेक्ट के साथ काम करने का संक्षेप में वर्णन करता है


साइट का उद्देश्य उपयोगकर्ताओं को भाषा के साथ काम करने में व्यावहारिक कौशल प्रदान करना है। जावास्क्रिप्ट पर प्रयोगशाला का काम, उनकी जटिलता बढ़ने पर प्रस्तुत किया गया है और स्पष्ट, हल किए गए उदाहरणों द्वारा समर्थित है, जो आपको अध्ययन की जा रही सामग्री को आसानी से समझने और स्वतंत्र रूप से "जीवित", गतिशील वेब पेज बनाने का तरीका सीखने की अनुमति देगा।


जावास्क्रिप्ट में कई प्रकार की वस्तुएं हैं:

  • अंतर्निर्मित वस्तुएं
  • ब्राउज़र ऑब्जेक्ट
  • ऑब्जेक्ट जो प्रोग्रामर स्वतंत्र रूप से बनाता है (उपयोगकर्ता द्वारा परिभाषित)

अंतर्निर्मित ऑब्जेक्ट पूर्वनिर्धारित ऑब्जेक्ट हैं... जिनमें से अधिकांश को पिछले पाठों में पहले ही कवर किया जा चुका है।

हम आगे के पाठों में जावास्क्रिप्ट में ब्राउज़र ऑब्जेक्ट के बारे में बात करेंगे।

अब जावास्क्रिप्ट में कस्टम ऑब्जेक्ट्स से परिचित होने का समय है।

  • वस्तु
  • संख्या (संख्या प्रसंस्करण)
  • स्ट्रिंग (स्ट्रिंग प्रोसेसिंग)
  • सरणी
  • गणित (गणितीय सूत्र, कार्य और स्थिरांक)
  • दिनांक (दिनांक और समय के साथ कार्य करना)
  • रेगुलर एक्सप्रेशन
  • वैश्विक (इसके गुण अनंत, NaN, अपरिभाषित)
  • समारोह
जावास्क्रिप्ट ऑब्जेक्ट निर्माण

ऑब्जेक्ट बनाने के 2 तरीके हैं:

  • ऑब्जेक्ट इनिशियलाइज़र का उपयोग करना (या संग्रह ऑब्जेक्ट बनाना)
  • ऑब्जेक्ट कंस्ट्रक्टर का उपयोग करना()
  • संग्रह वस्तुएँ बनाना
  • var object_name = नया ऑब्जेक्ट(); object_name.property = value;// dot notation object_name["property"] = value;// ब्रैकेट नोटेशन

    महत्वपूर्ण: यह ध्यान देने योग्य है कि आप किसी संख्या को मान के रूप में उपयोग नहीं कर सकते: myObg.rost = 2 // असंभव! myObg.rost = "2" // संभव

    उदाहरण: गुण नाम (मान) के साथ एक ऑब्जेक्ट myBrowser बनाएं ) और संस्करण (मान " 9.0 »)


    ✍ समाधान 1:

      var myBrowser = नया ऑब्जेक्ट(); myBrowser.name= "माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर"; myBrowser["संस्करण"]= "9.0";

    उदाहरण: रंग और ब्रांड गुणों के साथ दो संग्रह ऑब्जेक्ट (कार और मोटो) बनाएं। संपत्ति मूल्य प्रिंट करें रंगवस्तु पर कारऔर गुण ब्रांडवस्तु पर मोटो.


    ✍ समाधान:
      var कार = नई वस्तु(); कार.रंग = "सफ़ेद" ; कार.मैक्सस्पीड = 220; कार.ब्रांड = "निसान" ; document.write ("कार का रंग है:" + car.color ); वर मोटो = (रंग: "नीला", अश्वशक्ति: 130, ब्रांड: "यामाहा"); document.write ("मोटरसाइकिल किसके द्वारा बनाई गई है:" + moto.brand );

      var कार = नई वस्तु(); कार.रंग = "सफ़ेद"; कार.मैक्सस्पीड=220; कार.ब्रांड = "निसान"; दस्तावेज़.लिखें ("कार का रंग है:" + कार.रंग); वर मोटो = (रंग: "नीला", अश्वशक्ति: 130, ब्रांड: "यामाहा"); document.write("मोटरसाइकिल का निर्माता है:" + moto.brand);

    जावास्क्रिप्ट में ऑब्जेक्ट के साथ काम करते समय "प्रत्येक के लिए" लूप

    इस डिज़ाइन के बारे में पहले ही काफी कुछ कहा जा चुका है।
    जावास्क्रिप्ट में फॉर इन लूप को सरणियों, संग्रहों और वस्तुओं के माध्यम से पुनरावृत्त करने के लिए डिज़ाइन किया गया है।

    आइए for in का उपयोग करने का एक उदाहरण देखें:

    1 2 3 4 5 6 7 8 var myBrowser = नया ऑब्जेक्ट(); myBrowser.name = "माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर"; myBrowser["संस्करण" ] = "9.0" ; for (var a in myBrowser) ( अलर्ट(a) ; // myBrowser ऑब्जेक्ट के गुणों के माध्यम से पुनरावृत्त करता है। नाम लौटाएगा, संस्करण अलर्ट (myBrowser[ a] ) ; // संपत्ति मान लौटाता है)

    var myBrowser = नया ऑब्जेक्ट(); myBrowser.name= "माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर"; myBrowser["संस्करण"]= "9.0"; for (var a in myBrowser) ( अलर्ट(a); // myBrowser ऑब्जेक्ट के गुणों के माध्यम से पुनरावृत्त करता है। नाम लौटाएगा, संस्करण अलर्ट(myBrowser[a]); // संपत्ति मान लौटाता है)

  • कंस्ट्रक्टर क्लासेस बनाना
  • कंस्ट्रक्टर कक्षाएं बनाना दो चरणों में किया जाता है:

  • सबसे पहले, एक कंस्ट्रक्टर का उपयोग करके एक क्लास बनाई जाती है;
  • फिर कंस्ट्रक्टर के आधार पर एक नया ऑब्जेक्ट बनाया जाता है।
  • कंस्ट्रक्टर का उपयोग करके ऑब्जेक्ट क्लास बनाना (कंस्ट्रक्टर क्लास बनाना):

    फ़ंक्शन ऑब्जेक्ट_क्लास_नाम(sv1, sv2)(यह.sv1 = मान; यह.sv2 = मान;)

    किसी ऑब्जेक्ट क्लास के लिए कंस्ट्रक्टर के आधार पर एक नया ऑब्जेक्ट बनाना:

    var object_name = new class_name("stack_value1","staff_value2");

    var object_name =new class_name(); object_name.stv1='value_stv1'; object_name.stv2='value_stv2';

    कंस्ट्रक्टर वर्ग का नाम बड़े अक्षर से लिखने की प्रथा है!


    आइए एक उदाहरण देखें:

    उदाहरण: वस्तुओं के एक वर्ग के लिए एक कंस्ट्रक्टर बनाना और इस वर्ग के आधार पर एक ऑब्जेक्ट बनाना: गुणों के नाम (मूल्य) के साथ एक ऑब्जेक्ट myBrowser बनाएं "माइक्रोसॉफ्ट अंतर्जाल अन्वेषक") और संस्करण (मान " 9.0 »)

    समाधान खोलें

    1 2 3 4 5 6 7 8 फ़ंक्शन ब्राउज़र (नाम, संस्करण) (यह .नाम = नाम; यह .संस्करण = संस्करण; ) var myBrowser = नया ब्राउज़र ("माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर", "9.0"); चेतावनी(myBrowser.name); चेतावनी(myBrowser.version);

    फ़ंक्शन ब्राउज़र (नाम, संस्करण) (यह नाम = नाम; यह संस्करण = संस्करण; ) var myBrowser = नया ब्राउज़र ("माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर", "9.0"); चेतावनी(myBrowser.name); चेतावनी(myBrowser.version);

    तो, आइए ऑब्जेक्ट बनाने की पहली विधि से फिर से तुलना करें:

    // संग्रह ऑब्जेक्ट var myBrowser = (नाम: "माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर", संस्करण: "7.0"); चेतावनी(myBrowser.name); चेतावनी(myBrowser.version); // निम्नलिखित पंक्ति अमान्य है! var myBrowser1 = new myBrowser('MozillaFirefox','3.5'); // सच नहीं! !!

    महत्वपूर्ण: संग्रह ऑब्जेक्ट बनाते समय, आप क्लास का एक उदाहरण नहीं बना सकते, क्योंकि यह एक क्लास नहीं है


    जेएस कार्य 6_1. एक कर्मचारी ऑब्जेक्ट बनाएं जिसमें एक निश्चित कंपनी के कर्मचारियों के बारे में जानकारी हो, जैसे नाम, विभाग, फोन, वेतन (कन्स्ट्रक्टर फ़ंक्शन और इस कीवर्ड का उपयोग करें)। एक ऑब्जेक्ट इंस्टेंस बनाएं

    जावास्क्रिप्ट में ऑब्जेक्ट गुणों तक पहुँचना

    वस्तु_नाम. संपत्ति का नाम

    1 2 एजेंट007.नाम = "बॉन्ड" ; चेतावनी(एजेंट007.नाम);

    एजेंट007.नाम = "बॉन्ड"; चेतावनी(एजेंट007.नाम);

    डिफ़ॉल्ट संपत्ति क्या है

    कंस्ट्रक्टर फ़ंक्शन आपको किसी ऑब्जेक्ट को डिफ़ॉल्ट गुण निर्दिष्ट करने की अनुमति देता है। बनाई गई वस्तु के प्रत्येक उदाहरण में ये गुण होंगे।

    1 2 3 4 5 6 7 8 9 10 फ़ंक्शन छात्र (नाम, फ़ोन) (यह .नाम = नाम; यह .फ़ोन = "22-22-22" ; // डिफ़ॉल्ट संपत्ति!) var इवानोव = नया छात्र ("इवान", "33-33-33") ; चेतावनी (ivanov.name); // "इवान" अलर्ट जारी करेगा (ivanov.phone); // "22-22-22" ivanov.phone = "33-33-33" प्रदर्शित करेगा; //डिफ़ॉल्ट प्रॉपर्टी अलर्ट बदलें (ivanov.phone); // "33-33-33" लौटाएगा

    फ़ंक्शन छात्र (नाम, फ़ोन) (यह.नाम=नाम; यह.फ़ोन='22-22-22'; // डिफ़ॉल्ट संपत्ति! ) वर इवानोव = नया छात्र('इवान','33-33-33') ; चेतावनी(ivanov.name); // "इवान" अलर्ट जारी करेगा (ivanov.phone); // "22-22-22" ivanov.phone='33-33-33' प्रदर्शित करेगा; //डिफ़ॉल्ट प्रॉपर्टी अलर्ट बदलें (ivanov.phone); // "33-33-33" लौटाएगा

    किसी ऑब्जेक्ट क्लास में गुण जोड़ना

    संपत्ति का मूल्य इसके लिए जोड़ा जा सकता है:

    • किसी वस्तु का एक विशिष्ट उदाहरण;
    • वस्तुओं का एक पूरा वर्ग

    गुण जोड़ना एक विशिष्ट के लिए(उदाहरण) वस्तु:

    वस्तु_नाम. संपत्ति_नाम = मूल्य

    ivanov.biology = "उत्कृष्ट";

    महत्वपूर्ण: उदाहरण में, संपत्ति किसी विशिष्ट ऑब्जेक्ट के लिए सेट की गई है, न कि ऑब्जेक्ट के किसी वर्ग के लिए!

    गुण जोड़ना कक्षा की तरफवस्तुएं:

    क्लास_नाम.प्रोटोटाइप। संपत्ति_नाम = मूल्य

    छात्र.प्रोटोटाइप.जीवविज्ञान = "उत्कृष्ट";

    महत्वपूर्ण: उदाहरण में, संपत्ति (डिफ़ॉल्ट रूप से) वस्तुओं के एक वर्ग के लिए सेट की गई है! यह प्रोटोटाइप का उपयोग करके किया जाता है; प्रोटोटाइप - एक वस्तु जो एक संरचना को परिभाषित करती है

    1 2 छात्र.प्रोटोटाइप.ईमेल = " [ईमेल सुरक्षित]" ; चेतावनी(ivanov.email ) ; // प्रदर्शित करेगा " [ईमेल सुरक्षित]"

    छात्र.प्रोटोटाइप.ईमेल='' [ईमेल सुरक्षित]"; चेतावनी(ivanov.email); // प्रदर्शित करेगा" [ईमेल सुरक्षित]"

    उदाहरण: किसी वस्तु के सभी गुणों को मानों के साथ प्रदर्शित करने का उदाहरण

    1 2 3 4 5 6 7 8 9 वर समरटूर= ( टर्की : 2000 , स्पेन : 3000 , मिस्र : 1000 ) ; वर विकल्प; के लिए (ग्रीष्म यात्रा में विकल्प) ( document.write (विकल्प + ":" + ग्रीष्मकालीन यात्रा[विकल्प] + "
    " ) ; }

    वर समरटूर=( टर्की: 2000, स्पेन: 3000, मिस्र: 1000); वर विकल्प; के लिए (ग्रीष्म यात्रा में विकल्प)( document.write(विकल्प + ":" + ग्रीष्मकालीन यात्रा + "
    "); }

    जावास्क्रिप्ट प्रोटोटाइप (परिचय)

    आइए एक उदाहरण देखें कि प्रोटोटाइप का उपयोग करके जावास्क्रिप्ट कक्षाएं कैसे बनाई जाती हैं

    उदाहरण: तीन गुणों के साथ एक ऑब्जेक्ट क्लास कार (कार) बनाएं: नाम (नाम), मॉडल (मॉडल), रंग (रंग)। विशिष्ट संपत्ति मूल्यों के साथ एक वर्ग का एक उदाहरण बनाएं। फिर, बनाए गए उदाहरण के माध्यम से जोड़ें कक्षा की तरफएक विशिष्ट डिफ़ॉल्ट मान के साथ मालिक की संपत्ति ( इवानोव). बनाए गए इंस्टेंस के सभी प्रॉपर्टी मान प्रिंट करें

    फ़ंक्शन कार(नाम, मॉडल, रंग) (/* कार ऑब्जेक्ट कंस्ट्रक्टर*/ यह .नाम = नाम; यह .मॉडल = मॉडल; यह .रंग = रंग; ) var myCar= नई कार; myCar.name = "मेर्स" ; myCar.model = "600" ; myCar.color = "हरा" ; कार.प्रोटोटाइप .मालिक = "इवानोव" ; /* एक नई प्रॉपर्टी जोड़ें*/ अलर्ट(myCar.name + " " + myCar.model + " " + myCar.color + " " + myCar.owner );

    फ़ंक्शन कार(नाम, मॉडल, रंग) (/* कार ऑब्जेक्ट कंस्ट्रक्टर*/ यह.नाम = नाम; यह.मॉडल = मॉडल; यह.रंग = रंग; ) var myCar=नई कार; myCar.name='मर्सिडीज'; myCar.model='600''; myCar.color='हरा'; Car.prototype.owner = "इवानोव"; /* एक नई प्रॉपर्टी जोड़ें*/ अलर्ट(myCar.name+" "+myCar.model+" "+myCar.color+" "+myCar.owner);

    जेएस कार्य 6_2. कर्मचारी ऑब्जेक्ट के बनाए गए उदाहरण के माध्यम से जेएस 6_1 कार्य के लिए, ऑब्जेक्ट क्लास में एक नया पता गुण जोड़ें

    जावास्क्रिप्ट ऑब्जेक्ट विधियाँ

    ऑब्जेक्ट विधि बनाना

    उदाहरण: ब्राउज़र ऑब्जेक्ट कंस्ट्रक्टर में ब्राउज़र के बारे में एक विधि जोड़ें, जो ब्राउज़र स्क्रीन पर इस ऑब्जेक्ट के गुणों के बारे में जानकारी प्रदर्शित करेगा

    1 2 3 4 5 6 7 8 9 10 11 12 13 फ़ंक्शन शोब्राउज़र() ( दस्तावेज़.लिखें("ब्राउज़र: " + यह .नाम + " " + यह .संस्करण ); ) फ़ंक्शन ब्राउज़र (नाम, संस्करण) ( यह .नाम = नाम; यह .संस्करण = संस्करण; यह .ब्राउज़र के बारे में = शोब्राउज़र; ) var myBrowser= नया ब्राउज़र('माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर', 8.0); myBrowser.aboutब्राउज़र();

    फ़ंक्शन शोब्राउज़र() ( दस्तावेज़.लिखें("ब्राउज़र: " + यह.नाम + " " + यह.संस्करण); ) फ़ंक्शन ब्राउज़र(नाम, संस्करण) ( यह.नाम = नाम; यह.संस्करण = संस्करण; यह.ब्राउज़र के बारे में = शोब्राउज़र; ) var myBrowser=नया ब्राउज़र('माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर',8.0); myBrowser.aboutब्राउज़र();

  • ऑब्जेक्ट विधियाँ फ़ंक्शन के आधार पर बनाई जाती हैं और क्लास कंस्ट्रक्टर में जोड़ी जाती हैं
  • फ़ंक्शन ब्राउज़र (नाम, संस्करण) (यह.नाम = नाम; यह.संस्करण = संस्करण; यह.ब्राउज़र के बारे में = फ़ंक्शन())( दस्तावेज़.लिखें("ब्राउज़र: " + नाम + " " + संस्करण); ) ) var myBrowser = नया ब्राउज़र ("माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर", 8.0); myBrowser.aboutब्राउज़र();

    जेएस कार्य 6_3. एक ट्रैवल कंपनी के संचालन के लिए एक ऑब्जेक्ट क्लास (टूर) बनाएं, जिसके आधार पर यात्रा की लागत की गणना करने की विधि हो: लोगों की संख्या * दिनों की मात्रा * देश शुल्क. संपत्ति मूल्यों के साथ टर्कीटूर ऑब्जेक्ट का एक उदाहरण बनाएं। स्क्रीन पर सभी ऑब्जेक्ट गुण प्रदर्शित करें। किसी फ़ंक्शन के आधार पर गणना ऑब्जेक्ट विधि बनाएं।

    अंतर्निहित वस्तुओं के जावास्क्रिप्ट प्रोटोटाइप (प्रोटोटाइप)।

    अंतर्निहित ऑब्जेक्ट में गुण और विधियाँ जोड़ना (प्रोटोटाइप)

    जावास्क्रिप्ट एक प्रोटोटाइप-आधारित OOP (ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग) भाषा है।
    प्रोटोटाइप - एक वस्तु जो किसी संरचना को परिभाषित करती है

    आइए एक उदाहरण का उपयोग करके प्रोटोटाइप के साथ काम करने को देखें:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* प्रोटोटाइप बदलना */ // अंतर्निहित ऑब्जेक्ट स्ट्रिंग .प्रोटोटाइप .रंग = "काला" में एक डिफ़ॉल्ट प्रॉपर्टी जोड़ना; // अंतर्निहित ऑब्जेक्ट में एक विधि जोड़ें (बदलें) स्ट्रिंग .प्रोटोटाइप .write = stringWrite; फ़ंक्शन stringWrite() ( document.write ("" ) ; document.write (this .toString() ) ; document.write ("" ) ; ) // संशोधित वर्ग का उपयोग करें var s = new String ("यह एक स्ट्रिंग है " ) ; एस.रंग = "लाल" ; एस.लिखें();

    /* प्रोटोटाइप बदलना */ // अंतर्निहित ऑब्जेक्ट में एक डिफ़ॉल्ट प्रॉपर्टी जोड़ना String.prototype.color = "black"; // किसी अंतर्निहित ऑब्जेक्ट में एक विधि जोड़ना (बदलना) String.prototype.write = stringWrite; फ़ंक्शन stringWrite())( document.write(""); document.write(this.toString()); document.write(""); ) // संशोधित वर्ग का उपयोग करें var s = new String("यह एक है डोरी"); एस.रंग = "लाल"; एस.लिखें();

    महत्वपूर्ण: आप किसी गणित ऑब्जेक्ट में गुण या विधियाँ नहीं जोड़ सकते।


    जेएस कार्य 6_4. कार्य को पूरा करने के लिए प्रोग्राम कोड जोड़ें: अंतर्निहित स्ट्रिंग क्लास में printMe() विधि जोड़ें, जो शब्द को प्रिंट करता है "हुर्रे!"हेडर (एच...टैग), उपयोगकर्ता-निर्दिष्ट स्तर () के रूप में।
    हेडर स्तर (1, 2...6) को स्ट्रिंग वर्ग की संपत्ति के रूप में जोड़ा जा सकता है।
    आइए याद रखें कि HTML में शीर्षक टैग कैसा दिखना चाहिए:

    शीर्षक

    कोड पूरा करें:

    1 2 3 4 5 6 7 8 स्ट्रिंग .प्रोटोटाइप .uroven = "1" ; ... फ़ंक्शन प्रिंटज़ागोलोवोक () ( ... ... ) var s= नया ...; ...

    String.prototype.uroven='1'; ... फ़ंक्शन प्रिंटज़ागोलोवोक ()( ... ... ) var s=new ...; ...

    सारांश: आइए जावास्क्रिप्ट में कस्टम ऑब्जेक्ट का उपयोग करने के लिए फिर से दो विकल्पों की तुलना करें:

  • संग्रह वस्तुएँ बनाना
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var myBook= नई वस्तु () ; myBook.title = "book" ; myBook.price = "200" ; alert(myBook[ "title" ] ) ; // 1-й вариант обращения к свойствам alert(meBook.price ) ; // 2-й вариант обращения к свойствам function myBookShow() { for (var i in myBook) { document.write (i+ ": " + myBook[ i] + "!}
    " ) ; // गुणों के माध्यम से पुनरावृत्त करें ) ) myBook.show = myBookShow; myBook.show() ;

    var myBook=नया ऑब्जेक्ट(); myBook.title='book"; myBook.price="200"; alert(myBook["title"]); // 1-й вариант обращения к свойствам alert(meBook.price); // 2-й вариант обращения к свойствам function myBookShow() { for (var i in myBook) { document.write(i+": "+myBook[i]+"!}
    "); // गुणों के माध्यम से पुनरावृत्त करें ) ) myBook.show=myBookShow; myBook.show();

  • कंस्ट्रक्टर क्लासेस बनाना
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 फ़ंक्शन myBook(शीर्षक, मूल्य) ( // गुणों को परिभाषित करना यह .शीर्षक = शीर्षक; यह .price = मूल्य; // विधि को परिभाषित करना यह .show = show; फ़ंक्शन शो() ( document.write ("शीर्षक:" + यह . शीर्षक ) ; document.write ("मूल्य:" + यह .मूल्य ) ; ) ) var पुस्तक = नई myBook ("पुस्तक" , 200 ); किताब.शो();

    फ़ंक्शन myBook(title,price)( // गुणों को परिभाषित करना this.title = title; this.price = कीमत; // विधि को परिभाषित करना this.show = show; function show() ( document.write("Title: " + this . शीर्षक); document.write("मूल्य: " + यह.मूल्य); ) ) var पुस्तक = नई myBook("पुस्तक", 200); किताब.शो();> मुखपृष्ठ प्र जाएं ... ...

  • मुखपृष्ठ प्र जाएं
  • ...
  • ...
  • *कॉम्प्लेक्स: मेनू आइटम की संख्या, उनके नाम और यूआरएलउपयोगकर्ता से अनुरोध किया जाना चाहिए

    युक्ति: शो() विधि में स्क्रीन पर एक स्ट्रिंग प्रदर्शित करने के लिए, document.write() विधि का उपयोग करें

    जावास्क्रिप्ट स्थान, नेविगेटर, स्क्रीन जावास्क्रिप्ट नेविगेटर ऑब्जेक्ट

    आइए एक उदाहरण का उपयोग करके जावास्क्रिप्ट में नेविगेटर ऑब्जेक्ट का उपयोग देखें:

    उदाहरण: एक फ़ंक्शन लिखें जो प्रदर्शित करता है:

    • ब्राउज़र का नाम
    • ब्राउज़र भाषा
    • ओएस का नाम
    • कुकीज़ सक्षम हैं
    • क्या उपयोगकर्ता इंटरनेट से जुड़ा है?
    • स्क्रीन संकल्प
    • रंग की गहराई
    • लोड किया गया पृष्ठ पता
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 वर विकल्प; // नेविगेटर ऑब्जेक्ट के सभी गुणों को प्रदर्शित करें (नेविगेटर में विकल्प) ( document.write (विकल्प + " : " + नेविगेटर [विकल्प] + "
    " ) ; ) // ऑब्जेक्ट नेविगेटर फ़ंक्शन उपयोगकर्ता विवरण () के विशिष्ट गुणों को खोजने के लिए फ़ंक्शन ( document.write ("

    ब्राउज़र का नाम: "+नेविगेटर.यूजरएजेंट+"
    "); document.write("ब्राउज़र भाषा:" + नेविगेटर.भाषा + "
    " ); document.write("OS नाम: " + नेविगेटर.oscpu + "
    " ); document.write (" क्या कुकीज़ सक्षम हैं: " + navigator.cookieEnabled + "
    "); document.write ("क्या इंटरनेट कनेक्ट है:" + navigator.nLine + "
    " ) ; ) उपयोगकर्ता विवरण() ;

    वर विकल्प; // नेविगेटर ऑब्जेक्ट के सभी गुणों को प्रदर्शित करें (नेविगेटर में विकल्प) ( document.write(option + " : " + नेविगेटर+ "
    "); ) // ऑब्जेक्ट नेविगेटर फ़ंक्शन के विशिष्ट गुणों को खोजने के लिए फ़ंक्शन उपयोगकर्ता विवरण ()( document.write("

    ब्राउज़र का नाम: "+नेविगेटर.यूजरएजेंट+"
    "); document.write("ब्राउज़र भाषा: " + नेविगेटर.भाषा + "
    "); document.write("OS नाम: " + नेविगेटर.oscpu + "
    "); document.write("क्या कुकीज़ सक्षम हैं: " + navigator.cookieEnabled + "
    "); document.write("क्या इंटरनेट कनेक्ट है:" + navigator.nLine + "
    "); ) उपयोगकर्ता विवरण();

    जावास्क्रिप्ट स्क्रीन ऑब्जेक्ट

    आइए एक उदाहरण का उपयोग करके जावास्क्रिप्ट में स्क्रीन ऑब्जेक्ट का उपयोग देखें:

    फ़ंक्शन उपयोगकर्ता विवरण ()( दस्तावेज़.लिखें("रिज़ॉल्यूशन: " + स्क्रीन.विड्थ + " x " + स्क्रीन.ऊंचाई + "
    "); दस्तावेज़.लिखें ("रंग की गहराई:" + स्क्रीन.रंग की गहराई + "x" + स्क्रीन.ऊंचाई + "
    "); ) उपयोगकर्ता विवरण();

    जावास्क्रिप्ट स्थान ऑब्जेक्ट

    आइए एक उदाहरण का उपयोग करके जावास्क्रिप्ट में स्थान ऑब्जेक्ट का उपयोग देखें:

    1 2 3 4 फ़ंक्शन उपयोगकर्ता विवरण() ( दस्तावेज़.लिखें("लोड किया गया पृष्ठ पता: " + स्थान.href + "
    " ) ; ) उपयोगकर्ता विवरण() ;

    फ़ंक्शन उपयोगकर्ता विवरण ()( दस्तावेज़.लिखें ("लोड किया गया पृष्ठ पता:" + स्थान.href + "
    "); ) उपयोगकर्ता विवरण();

    निष्कर्ष:

    • नए कीवर्ड के साथ अभिव्यक्तियों का उपयोग करके, आप वस्तुओं के उदाहरण बना सकते हैं, यानी, उनकी ठोस तात्कालिकताएँ।
    • इसके अलावा, जावास्क्रिप्ट प्रोटोटाइप प्रॉपर्टी के लिए धन्यवाद, उन ऑब्जेक्ट्स में नए गुणों और तरीकों को जोड़ना संभव है जो उपयोगकर्ता द्वारा आविष्कार किए गए थे और मूल अंतर्निहित ऑब्जेक्ट्स में मौजूद नहीं थे।
    • ऑब्जेक्ट निर्माण का उपयोग डेटाबेस बनाने के लिए किया जा सकता है।