tengo el sigiente prototipo:
Código Javascript:
Ver original
MysqlAjx = function ( tabla , debug ) { debug || (debug = false); this.constructor( tabla, debug ); } MysqlAjx.prototype = { '_nombreTabla' : '', 'registro' : { }, 'resultados' : [ 1, 2, 3 ], 'traer' : function (nroFilas , nroPagina , contar , callback) { nroFilas || ( nroFilas = 0 ); nroPagina || ( nroPagina = 0 ); contar || ( contar = false ); callback || ( callback = false ); this.enviarPost( 'select' , { filas : nroFilas, pagina : nroPagina, total : contar } ,function( info ) { if(!info.error) { this.resultados = [ ]; for(var i=0; i<info.datos.length; i++) { this.resultados[i] = { }; for (var property in info.datos[i]) { this.resultados[i][property] = info.datos[i][property]; } } if(this.resultados.length > 0) this.registro = this.resultados[0]; } else { this.registro = { }; this.resultados = [ ]; } // Aca, this.resultados tiene todos los valores que corresponde y se los puede ver y acceder sin problemas. if(callback) callback(info); } ); } }
Esa es solo la parte relevante ya que es bastante mas grande que eso.
Ahora bien, lo utilizo asi:
Código Javascript:
Ver original
var test = new MysqlAjx('test', true); var Self = test; test.traer(3, 1, true, function(datos){ // Aca, veo a la variable resultados asi: 'resultados' : [ 1, 2, 3 ], // Es decir, se comporta como estatica, ya que esos valores no existen mas // Fueron (o debieron) ser pisados en la funcion traer ya que dentro de ella, antes de llamar a este callback estaban asignados bien. alert(Self.resultados.length); });
El problema es que no encuentro forma de accederla desde afuera, esta debe ser una propiedad publica, dentro de la funcion traer del prototipo resultados tiene los valores nuevos, pero al ejecutar el callback solo veo los que se le asigno por defecto.
¿Que estoy haciendo mal?
Edito: Como dato a adicional, para que parezca mas rara la cosa todavia, la propiedad _nombreTabla si la puedo acceder correctamente desde los dos lugares y ver su valor sin problemas.