Prototype JavaScript Framework
प्रोटोटाइप जावास्क्रिप्ट फ्रेमवर्क एक जावास्क्रिप्ट फ्रेमवर्क है जिसे सैम स्टीफेंसन द्वारा फरवरी 2005 में रूबी ऑन रेल्स में अजाक्स समर्थन के हिस्से के रूप में बनाया गया था। इसे जावास्क्रिप्ट कोड की एकल फ़ाइल के रूप में लागू किया जाता है, जिसे आमतौर पर prototype.js नाम दिया जाता है। प्रोटोटाइप को स्वतंत्र रूप से वितरित किया जाता है, लेकिन बड़ी परियोजनाओं के हिस्से के रूप में भी, जैसे कि रूबी ऑन रेल्स, script.aculo.us और रिको। डब्ल्यू3टेक के अनुसार, सभी वेबसाइटों में से 0.6% प्रोटोटाइप का उपयोग करते हैं। विशेषता प्रोटोटाइप जावास्क्रिप्ट अनुप्रयोगों को विकसित करने के लिए विभिन्न कार्य प्रदान करता है। विशेषताओं में प्रोग्रामिंग शॉर्टकट से लेकर एक्सएमएलएचटीटीपीआरक्वेस्ट से निपटने के लिए प्रमुख कार्य शामिल हैं। प्रोटोटाइप कक्षाओं और वर्ग-आधारित वस्तुओं का समर्थन करने के लिए पुस्तकालय कार्य भी प्रदान करता है। जावास्क्रिप्ट में, ऑब्जेक्ट क्रिएशन इसके बजाय प्रोटोटाइप-आधारित हैः एक ऑब्जेक्ट क्रिएटिंग फंक्शन में एक प्रोटोटाइप प्रॉपर्टी हो सकती है, और उस प्रॉपर्टी को सौंपी गई किसी भी ऑब्जेक्ट का उपयोग उस फंक्शन के साथ बनाई गई ऑब्जेक्ट्स के लिए प्रोटोटाइप के रूप में किया जाएगा। प्रोटोटाइप ढांचे को इस भाषा विशेषता के साथ भ्रमित नहीं होना चाहिए। नमूना उपयोगिता कार्य $() कार्य डॉलर कार्य, $(), का उपयोग गेटइलिमेंटबाईआईडी कार्य के लिए संक्षिप्त नाम के रूप में किया जा सकता है। एच. टी. एम. एल. पृष्ठ के दस्तावेज़ ऑब्जेक्ट मॉडल (डी. ओ. एम.) में एक तत्व को संदर्भित करने के लिए, एक तत्व की पहचान करने वाला सामान्य कार्य हैः document.getElementById ("आईडी _ ऑफ _ एलिमेंट"). स्टाइल. कलर = "#ffffff"; $() फ़ंक्शन कोड को घटाकरः $("आईडी _ ऑफ _ एलिमेंट"). सेटस्टाइल ({रंगः "#ffffff"}) कर देता है; $() फ़ंक्शन भी एक तत्व को पैरामीटर के रूप में प्राप्त कर सकता है और वापस आ जाएगा, जैसा कि पिछले उदाहरण में, एक प्रोटोटाइप विस्तारित वस्तु। वार डोम एलिमेंट = document.getElementById ("आईडी _ ऑफ _ एलिमेंट");// सामान्य ऑब्जेक्ट संदर्भ रिटर्न वार प्रोटोटाइप एनहांस्ड डोम एलिमेंट = $(डोम एलिमेंट);// प्रोटोटाइप विस्तारित ऑब्जेक्ट संदर्भ नोटः अंडरस्कोर (_) की तरह, $वर्ण जावास्क्रिप्ट पहचानकर्ताओं में एक कानूनी "शब्द वर्ण" है, और भाषा में इसका कोई अन्य महत्व नहीं है। इसे नियमित अभिव्यक्तियों के लिए समर्थन के रूप में भाषा में जोड़ा गया था, ताकि पर्ल जैसे मिलान चर का अनुकरण किया जा सके, जैसे कि $'और $'। $F () फ़ंक्शन $() फ़ंक्शन पर निर्माणः $F () फ़ंक्शन अनुरोधित फॉर्म तत्व का मूल्य बताता है। 'टेक्स्ट' इनपुट के लिए, फ़ंक्शन तत्व में निहित डेटा को वापस कर देगा। 'सेलेक्ट' इनपुट एलिमेंट के लिए, फंक्शन वर्तमान में चयनित मूल्य वापस करेगा। $F ("आईडी _ ऑफ _ इनपुट _ एलिमेंट") $$() फंक्शन डॉलर डॉलर फंक्शन प्रोटोटाइप का सीएसएस सिलेक्टर इंजन है। यह सी. एस. एस. स्टाइलशीट में चयनकर्ता के समान नियमों का पालन करते हुए सभी मेल खाने वाले तत्वों को लौटाता है। उदाहरण के लिए, यदि आप "पल्सेट" वर्ग के साथ सभी <a> तत्वों को प्राप्त करना चाहते हैं, तो आप निम्नलिखित का उपयोग करेंगेः $$("a.pulsate") यह तत्वों का संग्रह देता है। यदि आप कोर प्रोटोटाइप लाइब्रेरी के script.aculo.us विस्तार का उपयोग कर रहे हैं, तो आप निम्नानुसार "पल्सेट" (पलक झपकाना) प्रभाव लागू कर सकते हैंः $$("a.pulsate"). प्रत्येक (Effect.Pulsate); अजाक्स ऑब्जेक्ट क्रॉस-ब्राउज़र XMLHttpReवेस्ट फ़ंक्शन को चलाने के लिए आवश्यक कोड की मात्रा को कम करने के प्रयास में, प्रोटोटाइप विभिन्न ब्राउज़रों को अमूर्त करने के लिए अजाक्स ऑब्जेक्ट प्रदान करता है। इसकी दो मुख्य विधियाँ हैंः Ajax.Request () और Ajax.Updater ()। अजाक्स ऑब्जेक्ट के दो रूप हैं। Ajax.Request ए. जे. ए. एक्स. कॉल से रॉ एक्स. एम. एल. आउटपुट देता है, जबकि Ajax.Updater एक निर्दिष्ट डी. ओ. एम. ऑब्जेक्ट के अंदर रिटर्न को इंजेक्ट करेगा। नीचे दिया गया Ajax.Request दो एच. टी. एम. एल. फॉर्म इनपुट तत्वों के वर्तमान मूल्यों को ढूंढता है, उन तत्व नाम/मूल्य जोड़े के साथ सर्वर को एक एच. टी. टी. पी. पोस्ट अनुरोध जारी करता है, और सर्वर से एच. टी. टी. पी. प्रतिक्रिया प्राप्त होने पर एक कस्टम फ़ंक्शन (जिसे नीचे शोरेस्पॉन्स कहा जाता है) चलाता हैः नया Ajax.Request ("एच. टी. टी. पी./लोकलहोस्ट/सर्वर स्क्रिप्ट", {मापदंडः {मानः $एफ ("फॉर्म _ एलिमेंट _ आई. डी. 1"), मान 2: $एफ ("फॉर्म _ एलिमेंट _ आई. डी. 2"), ऑनसुसैसः शोरेस्पॉन्स, ऑनफैलरः शोएरर); ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग प्रोटोटाइप भी अधिक पारंपरिक ऑब्जेक्ट के लिए समर्थन जोड़ता है - Class.create () विधि का उपयोग एक नया वर्ग बनाने के लिए किया जाता है। इसके बाद एक वर्ग को एक प्रोटोटाइप सौंपा जाता है जो वर्ग के उदाहरणों के लिए एक खाका के रूप में कार्य करता है। वार फर्स्टक्लास = Class.create ({// आरंभ विधि एक निर्माणकर्ता के रूप में कार्य करती हैः फ़ंक्शन () {this.data = "हैलो वर्ल्ड";}}); एक और वर्ग का विस्तारः Ajax.Request = Class.create (Ajax.Base, {// आरंभ विधि को ओवरराइड करें आरंभ विधिः फ़ंक्शन (यूआरएल, विकल्प) {this.transport = Ajax.getTransport (); this.setOptions (विकल्प); this.request (यूआरएल);},//. अधिक तरीके जोड़ें।); फ्रेमवर्क फ़ंक्शन Object.extend (डेस्ट, src) दो वस्तुओं को मापदंडों के रूप में लेता है और दूसरी वस्तु के गुणों को पहले वाले में कॉपी करता है। संयुक्त वस्तु भी फलन के परिणामस्वरूप वापस आ जाती है। जैसा कि उपरोक्त उदाहरण में, पहला पैरामीटर आमतौर पर आधार वस्तु बनाता है, जबकि दूसरा एक अनाम वस्तु है जिसका उपयोग केवल अतिरिक्त गुणों को परिभाषित करने के लिए किया जाता है। संपूर्ण उप-वर्ग घोषणा फंक्शन कॉल के कोष्ठक के भीतर होती है। जेक्वेरी जैसे अन्य जावास्क्रिप्ट पुस्तकालयों के विपरीत, प्रोटोटाइप डी. ओ. एम. का विस्तार करता है। पुस्तकालय के अगले प्रमुख संस्करण में इसे बदलने की योजना है। अप्रैल 2010 में, ब्लॉगर ज्युरी 'कंगैक्स' जायत्सेव (प्रोटोटाइप कोर के) ने W3C डीओएम द्वारा परिभाषित वस्तुओं में नए तरीकों और गुणों को जोड़ने से होने वाली समस्याओं का विस्तार से वर्णन किया। ये विचार मार्च 2010 में याहू! द्वारा प्रकाशित विचारों को प्रतिध्वनित करते हैं। डेवलपर निकोलस सी. ज़कास उन्हें निम्नलिखित क्रॉस ब्राउज़र मुद्दों के रूप में संक्षेपित किया गया हैः मेजबान वस्तुएं नियमों, गैर-अनुपालन आई. ई. डी. ओ. एम. व्यवहार, आदि के अधीन नहीं हैं। 2008 तक, प्रोटोटाइप के पुराने संस्करणों में डी. ओ. एम.-विस्तार विधियों का उपयोग करने के साथ विशिष्ट मुद्दे, वर्तमान ब्राउज़रों के नए संस्करणों के साथ संयुक्त, पहले से ही प्रलेखित किए जा रहे थे। पहले से मौजूद 'मेजबान' डी. ओ. एम. वस्तुओं जैसे कि तत्व, जैसे element.hide () में नए तरीकों और गुणों को जोड़ने के बजाय, इन मुद्दों का समाधान इन मेजबान वस्तुओं के आसपास रैपर ऑब्जेक्ट प्रदान करना और इन पर नए तरीकों को लागू करना है। जेक्वेरी उस नाम के पुस्तकालय में एक ऐसी आवरण वस्तु है। अजाक्स (प्रोग्रामिंग) जावास्क्रिप्ट फ्रेमवर्क की तुलना मूटूल जावास्क्रिप्ट फ्रेमवर्क जेक्वेरी जावास्क्रिप्ट फ्रेमवर्क जावास्क्रिप्ट लाइब्रेरी संदर्भ ग्रंथ सूची बाहरी लिंक जावास्क्रिप्ट लाइब्रेरी अजाक्स (प्रोग्रामिंग) सॉफ्टवेयर एमआईटी लाइसेंस का उपयोग करते हुए देखें।