Prototipuri in JAVASCRIPT

Posted by | January 19, 2009 | JavaScript | No Comments

Desi javascript nu suporta clase totusi se poate poate programa obiectual si anume folosind prototipuri. Javascript este un limbaj in care gasesti atat cele mai mari idiotenii posibile care s-au putut inventa in vre-un limbaj de programare cat si unele cu adevarat geniale, printre acestea se numara faptul ca un obiect in Javascript este un container generic la care ii poti adauga oricand o noua proprietate sau “metoda”. Mai jos este un exemplu de “clasa” (un echivelent al unei clase din limbaje care suporta asa ceva) ce incapsuleaza mecanismul cunoscut si sub denumirea de AJAX.

Pentru cei care nu stiu AJAX este un mecanism de comunicare asicrona cu server-ul, adica pentru a aduce informatie nu este necesara un refresh de pagina.

function AjaxRequest(url)

{

this.url=url;

this.xmlHttp=””;

this.init=function()

{

try

{

// Firefox, Opera 8.0+, Safari

this.xmlHttp=new XMLHttpRequest();

}

catch (e)

{

// Internet Explorer

try

{

this.xmlHttp=new ActiveXObject(“Msxml2.XMLHTTP”);

}

catch (e)

{

try

{

this.xmlHttp=new ActiveXObject(“Microsoft.XMLHTTP”);

}

catch (e)

{

alert(“Your browser does not support AJAX!”);

return false;

}

}

}

}

this.request=function()

{

this.init();

try{

this.xmlHttp.open(this.requestType,this.url,true);

}

catch(e)

{

this.onLoadFaild(e);

}

this.xmlHttp.send(this.vars);

var parent=this;

this.xmlHttp.onreadystatechange=function()

{

var done = 4, ok = 200;

if (parent.xmlHttp.readyState == done && parent.xmlHttp.status == ok)

{

if (parent.xmlHttp.responseText)

{

parent.onLoad(parent.xmlHttp.responseText);

}

}

}

}

this.get=function(vars)

{

this.vars=vars;

this.requestType=”GET”;

this.request();

}

this.post=function(vars)

{

this.vars=vars;

this.requestType=”POST”;

this.request();

}

}

Codul este destul de simplu ..aproape ca vorbeste de la sine. Avantajul programarii folosind obiecte este ca utilizare este foarte simpla plus ca putem avea conexiuni multiple pe servere separate

script1=new AjaxRequest(“http://un.site.de.undeva”);

script1.onLoad=function(sucess){

if(sucess==true){

prelucreaza informatia primita

}

}

script1.get(“”);

script2=new AjaxRequest(“http://un.site.de.altundeva”);

script2.onLoad=function(sucess){

if(sucess==true){

prelucreaza informatia primita

}

}

script2.get(“”);

About Andrei Tara

Andrei is a developer/geek who loves creating high quality and efficient applications, always following the best practices in software engineering. He loves the challenge of learning new, exciting things and playing with new languages, frameworks, and tools.

Leave a Reply