loading............
   Cita:  * La clase lanza un error cuando intenta ejecutar la funcion concat (que es de String) a un objeto JSON (this. options)
    Bueno, en realidad no es un objeto JSON sinó un OBJETO LITERAL, y puede ser concatenado (ya que antes añadimos un método prototype a los OBJETOS. entonces puedes concatenar un objeto con otro.  
Código:
 /**
 * Concat Object
 * @param {Object} obj Object
 * @return {Object} this
 */
 Object.prototype.concat = function(obj)
 {
         for (var i in obj)
         {
                 if(obj.propertyIsEnumerable(i))
                 {
                         this[i]=obj[i];
                 }
         }
         return this;
 };
   Cita:  * La programación de la Clase no es del todo "profesional" ya que de esa manera en cada instancia que hago de la misma estoy definiendo todos los metodos y esto hace comsumir mas recursos de lo apropiado.
    Si, en eso te apoyo.. ZITAL que quieres hacer? jajajajaja 
Pero la idea original creo yo era construir propiedades a partir de argumentos.  
 Cita:  vamos me muestra un 1, pero no llega a hacer los 4 correspondientes :(
    Es porque  
 Cita:  ajax.onreadystatechange=this.ready(ajax);
    Ahí ejecutas el método this.ready, recuerda que a onreadystate debe pasarse UNA FUNCION y no así EL RESULTADO DE UNA FUNCION.; 
debería ser  
 Cita:  ajax.onreadystatechange=this.ready;
    En todo caso ya no es necesario pasarle el valor "ajax" ya que lo defines antes.   
Entonces al llamar a la funcion this.ready, ese valor "ajax" se mantiene en un contexto GLOBAL para la función  
Código:
     this.ready=function()
     {     	     	 
     	  alert(ajax.readyState);
  tiene que funcionar ;) 
connection closed.