A Prototype egy JavaScript keretrendszer ami arra hivatott, hogy kibővítse a böngésző JavaScript kezelő környezetét, kibővítse a DOM elemeit, a JavaScript beépített típusait, valamint hogy egyszerű és jól használható függvényeket adjon a fejlesztő kezébe.
Általános jellemzők
- A Prototype nem egy teljes alkalmazásfejlesztési keretrendszer, nincsenek saját widgetjei vagy megvalósítási metódusai. Igazából fél úton áll a mindent kézzel való kódolás és egy teljes alkalmazás keretrendszer között.
- A Prototype nem függ egyik szerver oldali keretrendszertől sem, rendben kommunikál és működik együtt bármelyikkel legyen az PHP, Ruby, ASP, Java vagy bármi más.
- Egyetlen js file-ból áll ami a prototype.js a maga 124KB-os méretével igazán nem mondható súlyos keretrendszernek.
- Letölthető a Protoype hivatalos weblapjáról a MIT licensz szerint.
- Ugyanitt elérhető egész jól használható api dokumentáció. Magyar nyelven a 1.4-es verzió leírása érhető el. Az itt tátongó lyukat kívánja bizonyos szempontból ez a sorozat befoltozni.
- Használatához csupán annyit kell tennünk, hogy a lapunk
<head>
részében el kell helyeznünk a következő<script>
tagot.<head> ... <script type="text/javascript" src="eleresi/ut/prototype.js"></script> ... </head>
Objektumok, névterek és modulok
A Prototype objektumok 3 kategóriába esnek.
- általános objektumok
- Ezek az általánosan használt objektumok, a
new
operátorral hozzuk őket létre, a tulajdonságok az egyes példányokban tárolódnak el, stb. - névterek
- Néhány objektumot nem példányosítunk, csak azért léteznek, hogy egységbe zárjanak bizonyos összetartozó alkatrészeket. Ilyen például az
Event
. - modulok
- Ezek olyan objektumok amelyeket mindig valami más objektummal összeházasítva használunk. Ilyen például az
Enumerable
objektum.
Na de mi is az a Prototype?
A prototype (prototípus – mintadarab) a JavaScript speciális objektumkezelésének egy lényeges és azt hihetetlen rugalmassá tevő része. Erről egy általános áttekintés olvasható a weblaboron.
A JavaScriptben nem léteznek hagyományosan értelmezett objektum osztályok, így kissé máshogyan értelmezhetőek a példányosítás, öröklés és hasonló koncepciók. A prototípusra gondolhatunk úgy mint egy tárolóra amiben olyan dolgok (függvények) vannak amelyet minden származtatott objektum közösen használ. Nézzünk egy egyszerű példát.
Contstruktor típusú megközelítés
function Valaki(vNev, kNev){ this.vNev = vNev; this.kNev = kNev; this.getNev = function(){ return this.vNev + ' ' + this.kNev; } }
Prototípus típusú megközelítés
function Valaki(vNev, kNev) { this.vNev = vNev; this.kNev = kNev; } Valaki.prototype = { getNev: function() { return this.vNev + ' ' + this.kNev; } } var frodo = new Valaki('Zsákos' , 'Frodó' ); var samu = new Valaki('Csavardi' , 'Samu' ); frodo.getNev(); //'Zsákos Frodó' samu.getNev(); //'Csavardi Samu'
A két megközelítés között az egyik lényeges különbség, hogy a construktor típusú esetben minden egyes objektumpéldányhoz létrejön egy külön getNev
metódus, míg a prototípus szerintinél csak egyszer jön létre amit aztán az egyes objektumpéldányok közösen használnak.
Ami a JavaScript objektumkezelését hihetetlenül rugalmassá teszi az az, hogy bármelyik objektum prototípusához hozzáférhetünk, így akár az alap beépített objektumokat is tudjuk módosítani. Ha módosítjuk a prototípust akkor minden objektumpéldány módosul függetlenül attól, hogy a prototípus piszkálása előtt vagy után hoztuk létre.
A Prototype library pontosan ezt a lehetőséget használja ki és a prototípusok kiterjesztésével bocsát a rendelkezésünkre sok sok lehetőséget, amelyek könyebbé, gyorsabbá, biztosabbá és élvezetesebbé teszik a JavaScript fejlesztést. De ezekről részletesebben a következő részekben lesz szó.
Hm, most találtam rá erre az oldalra, és azt kell mondjam, hogy egész egyszerűen fantasztikus! De komolyan, amilyen készséggel el vannak magyarázva a cikkekben leírtak, ahhoz csak gratulálni tudok. Persze az elejefele voltak kis kitekintések, amiknek gondoltam utánnanézek, de aztán mire eljutottam 2006-tól ide 2008-ig, már azok is ismertetésre kerültek. Szal nagyon nagy köszönet a leírásokért, nagyon hasznosak voltak. 🙂
IT: kösz a biztatást. Igyekszem folytatni. 🙂
nagyon hasznos leírások, gratulálok! 🙂