Prototype mintadarabok 1

prototypeA 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ó.

3 thoughts on “Prototype mintadarabok 1

  1. 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. 🙂

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.