Prototype JavaScript Framework
પ્રોટોટાઇપ જાવાસ્ક્રિપ્ટ ફ્રેમવર્ક એ સેમ સ્ટીફનસન દ્વારા ફેબ્રુઆરી 2005 માં રુબી ઓન રેલ્સમાં એજેક્સ સપોર્ટના ભાગ રૂપે બનાવેલ જાવાસ્ક્રિપ્ટ ફ્રેમવર્ક છે. તે જાવાસ્ક્રિપ્ટ કોડની એક ફાઇલ તરીકે અમલમાં મૂકવામાં આવે છે, જેને સામાન્ય રીતે prototype.js નામ આપવામાં આવે છે. પ્રોટોટાઇપ એકલ રીતે વહેંચવામાં આવે છે, પરંતુ રૂબી ઓન રેલ્સ, script.aculo.us અને રિકો જેવા મોટા પ્રોજેક્ટના ભાગ રૂપે પણ. W3techs અનુસાર, તમામ વેબસાઇટ્સમાંથી 0.6% પ્રોટોટાઇપનો ઉપયોગ કરે છે. લક્ષણો પ્રોટોટાઇપ જાવાસ્ક્રિપ્ટ કાર્યક્રમો વિકસાવવા માટે વિવિધ કાર્યો પૂરા પાડે છે. આ સુવિધાઓ પ્રોગ્રામિંગ શોર્ટકટ્સથી માંડીને XMLHttpRequest સાથે કામ કરવા માટેના મુખ્ય કાર્યો સુધીની છે. પ્રોટોટાઇપ વર્ગો અને વર્ગ-આધારિત વસ્તુઓને ટેકો આપવા માટે પુસ્તકાલય કાર્યો પણ પ્રદાન કરે છે. જાવાસ્ક્રિપ્ટમાં, ઓબ્જેક્ટ બનાવટ તેના બદલે પ્રોટોટાઇપ-આધારિત છેઃ ઓબ્જેક્ટ બનાવવાના કાર્યમાં પ્રોટોટાઇપ ગુણધર્મ હોઈ શકે છે, અને તે ગુણધર્મને સોંપેલ કોઈપણ ઓબ્જેક્ટનો ઉપયોગ તે કાર્ય સાથે બનાવેલ ઓબ્જેક્ટ્સ માટે પ્રોટોટાઇપ તરીકે કરવામાં આવશે. પ્રોટોટાઇપ માળખાને આ ભાષાના લક્ષણ સાથે ભેળસેળ ન કરવી જોઈએ. સેમ્પલ યુટિલિટી ફંક્શન્સ $() ફંક્શન ડોલર ફંક્શન, $(), નો ઉપયોગ ગેટઇલિમેન્ટબાયઆઇડી ફંક્શન માટે લઘુલિપિ તરીકે થઈ શકે છે. એચ. ટી. એમ. એલ. પૃષ્ઠના ડોક્યુમેન્ટ ઓબ્જેક્ટ મોડલ (ડી. ઓ. એમ.) માં તત્વનો સંદર્ભ આપવા માટે, તત્વને ઓળખવા માટેનું સામાન્ય કાર્ય છેઃ document.getElementById ("આઈડી _ ઓફ _ એલિમેન્ટ"). શૈલી. રંગ = "#ffffff"; $() કાર્ય કોડને ઘટાડીનેઃ $("આઈડી _ ઓફ _ એલિમેન્ટ"). સેટસ્ટાઇલ ({રંગઃ '#ffffff'}) કરે છે; $() કાર્ય પણ ઘટકને પરિમાણ તરીકે પ્રાપ્ત કરી શકે છે અને પાછું આવશે, અગાઉના ઉદાહરણની જેમ, પ્રોટોટાઇપ વિસ્તૃત ઓબ્જેક્ટ. વાર ડોમઇલિમેન્ટ = document.getElementById ("આઈડી _ ઓફ _ એલિમેન્ટ");// સામાન્ય ઓબ્જેક્ટ સંદર્ભ પરત કરેલ વાર પ્રોટોટાઇપઇન્હાન્સડ ડોમઇલિમેન્ટ = $(ડોમઇલિમેન્ટ);// પ્રોટોટાઇપ વિસ્તૃત ઓબ્જેક્ટ સંદર્ભ નોંધઃ અંડરસ્કોર (_) ની જેમ, $અક્ષર જાવાસ્ક્રિપ્ટ ઓળખકર્તાઓમાં કાનૂની "શબ્દ અક્ષર" છે, અને ભાષામાં તેનું કોઈ અન્ય મહત્વ નથી. તેને ભાષામાં નિયમિત સમીકરણો માટે સમર્થન તરીકે ઉમેરવામાં આવ્યું હતું, જેથી પર્લ જેવા મેળ ખાતા ચલોનું અનુકરણ કરી શકાય, જેમ કે $'અને $'. $F () કાર્ય $() કાર્ય પર નિર્માણઃ $F () કાર્ય વિનંતી કરેલ ફોર્મ તત્વનું મૂલ્ય આપે છે. 'ટેક્સ્ટ' ઇનપુટ માટે, કાર્ય તત્વમાં સમાવિષ્ટ ડેટાને પરત કરશે. 'સિલેક્ટ' ઇનપુટ એલિમેન્ટ માટે, ફંક્શન હાલમાં પસંદ કરેલ મૂલ્ય પરત કરશે. $F ("આયડી _ ઓફ _ ઇનપુટ _ એલિમેન્ટ") $$() ફંક્શન ડોલર ડૉલર ફંક્શન એ પ્રોટોટાઇપનું CSS સિલેક્ટર એન્જિન છે. તે CSS સ્ટાઇલશીટમાં પસંદગીકાર જેવા જ નિયમોનું પાલન કરીને તમામ મેળ ખાતા ઘટકો પરત કરે છે. ઉદાહરણ તરીકે, જો તમે "પલ્સેટ" વર્ગ સાથેના તમામ <a> ઘટકો મેળવવા માંગતા હો, તો તમે નીચેનાનો ઉપયોગ કરશોઃ $$("a.pulsate") આ ઘટકોનો સંગ્રહ આપે છે. જો તમે કોર પ્રોટોટાઇપ લાઇબ્રેરીના script.aculo.us એક્સ્ટેંશનનો ઉપયોગ કરી રહ્યાં છો, તો તમે નીચે પ્રમાણે "પલ્સેટ" (ઝબકવું) અસર લાગુ કરી શકો છોઃ $$("a.pulsate"). દરેક (Effect.Pulsate); એજેક્સ ઓબ્જેક્ટ ક્રોસ-બ્રાઉઝર XMLHttpReવેસ્ટ ફંક્શન ચલાવવા માટે જરૂરી કોડની માત્રાને ઘટાડવાના પ્રયાસમાં, પ્રોટોટાઇપ વિવિધ બ્રાઉઝર્સને અમૂર્ત કરવા માટે એજેક્સ ઓબ્જેક્ટ પ્રદાન કરે છે. તેની બે મુખ્ય પદ્ધતિઓ છેઃ Ajax.Request () અને Ajax.Updater (). એજેક્સ ઓબ્જેક્ટના બે સ્વરૂપો છે. Ajax.Request એ. જે. એ. એક્સ. કોલમાંથી કાચા XML આઉટપુટને પરત કરે છે, જ્યારે Ajax.Updater ચોક્કસ ડી. ઓ. એમ. ઓબ્જેક્ટની અંદર વળતરને દાખલ કરશે. નીચેનો Ajax.Request બે એચટીએમએલ ફોર્મ ઇનપુટ ઘટકોના વર્તમાન મૂલ્યો શોધે છે, તે તત્વના નામ/મૂલ્ય જોડીઓ સાથે સર્વરને HTTP POST વિનંતી જારી કરે છે, અને જ્યારે સર્વર પાસેથી HTTP પ્રતિસાદ પ્રાપ્ત થાય છે ત્યારે કસ્ટમ ફંક્શન ચલાવે છે (જેને નીચે શોરેસ્પોન્સ કહેવાય છે): નવું Ajax.Request ("HTTP:// લોકલહોસ્ટ/સર્વર સ્ક્રિપ્ટ", {પરિમાણોઃ {મૂલ્યઃ $F ("ફોર્મ _ એલિમેન્ટ _ ID _ 1"), મૂલ્ય 2: $F ("ફોર્મ _ એલિમેન્ટ _ ID _ 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માં યાહૂ! દ્વારા પ્રકાશિત વિચારોને પડઘો પાડે છે. વિકાસકર્તા નિકોલસ સી. ઝાકાસ તેમને નીચે પ્રમાણે સારાંશિત કરવામાં આવ્યા છે ક્રોસ બ્રાઉઝર મુદ્દાઓઃ યજમાન પદાર્થો નિયમો, બિન-પાલન IE DOM વર્તન વગેરેને આધિન નથી. 2008 સુધીમાં, પ્રોટોટાઇપના જૂના વર્ઝનમાં ડીઓએમ-એક્સ્ટેંશન પદ્ધતિઓનો ઉપયોગ કરવા સાથેના ચોક્કસ મુદ્દાઓ, વર્તમાન બ્રાઉઝર્સના નવા વર્ઝન સાથે જોડાઈને, પહેલેથી જ દસ્તાવેજીકરણ કરવામાં આવી રહ્યા હતા. એલિમેન્ટ જેવા પહેલાથી અસ્તિત્વમાં રહેલા 'યજમાન' ડી. ઓ. એમ. પદાર્થોમાં નવી પદ્ધતિઓ અને ગુણધર્મો ઉમેરવાને બદલે, જેમ કે element.hide (), આ સમસ્યાઓનો ઉકેલ આ યજમાન પદાર્થોની આસપાસ આવરણવાળા પદાર્થો પ્રદાન કરવાનો અને તેના પર નવી પદ્ધતિઓનો અમલ કરવાનો છે. જેક્વેરી એ તે નામની લાઈબ્રેરીમાં આવેલો રેપર ઓબ્જેક્ટ છે. એજેક્સ (પ્રોગ્રામિંગ) જાવાસ્ક્રિપ્ટ માળખાઓની સરખામણી મૂટૂલ્સ જાવાસ્ક્રિપ્ટ માળખું જેક્વેરી જાવાસ્ક્રિપ્ટ માળખું જાવાસ્ક્રિપ્ટ લાઇબ્રેરી સંદર્ભો ગ્રંથસૂચિ બાહ્ય કડીઓ જાવાસ્ક્રિપ્ટ લાઈબ્રેરીઓ એજેક્સ (પ્રોગ્રામિંગ) સોફ્ટવેર એમઆઇટી લાઇસન્સનો ઉપયોગ કરીને જુઓ.