function ConstructorXMLHttpRequest() {
if(window.XMLHttpRequest) /*Vemos si el objeto window(la base de la ventana del navegador) posee el método XMLHttpRequest(Navegadores como Mozilla y Safari). */
  { return new XMLHttpRequest(); } 
  //Si lo tiene, crearemos el objeto con este método. 
  else if(window.ActiveXObject) /*Sino tenía el método anterior, debería ser el Internet Exp. un navegador que emplea objetos ActiveX, lo mismo, miramos si tiene el método de creación. */
         {
           /*Hay diferentes versiones del objeto, creamos un array, que contiene los diferentes tipos desde la versión mas reciente, hasta la mas antigua */
          var versionesObj = new Array(
'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0',
'Msxml2.XMLHTTP',
'Microsoft.XMLHTTP');
     for (var i = 0; i < versionesObj.length; i++) {
       try {
/*Intentamos devolver el objeto intentando crear las diferentes versiones se puede intentar crear uno que no existe y se producirá un error. */
           return new ActiveXObject(versionesObj[i]);
           }
      catch (errorControlado) //Capturamos el error, ya que podría crearse otro objeto.
      {
    }
  }
}
/* Si el navegador llego aquí es porque no posee manera alguna de crear el objeto, emitimos un mensaje de error. */
throw new Error("No se pudo crear el objeto XMLHttpRequest");
}