Ciao a tutti! Sto studiando ajax e mi trovo in difficoltà nel capire alcune cose. Vi posto il codice in esame:

var myRequest = null;


function CreateXMLHttpReq(handler){
var xmlhttp = null;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = handler; // memorizza una funzione da chiamare ogni volta che la proprietà di readyState cambia
return xmlhttp;
}


function myHandler(){
if(myRequest.readyState == 4 && myRequest.status == 200){
alert(myRequest.responseText);
}
}


function esempio3(){
myRequest = CreateXMLHttpReq(myHandler);
myRequest.open("GET", "prova.php");
myRequest.send(null);
}

Questo codice funziona, ma non riesco a capire perchè. In particolare quando chiamo la funzione esempio3 alla funzione CreateXMLHttpReq cosa gli viene passato (myHandler)? Mi potete far capire cosa succede effettivamente all'esecuzione del codice? Grazie mille per la disponibilità