Foros del Web » Programando para Internet » Javascript »

No puedo acceder a propiedad de prototipo

Estas en el tema de No puedo acceder a propiedad de prototipo en el foro de Javascript en Foros del Web. Hola gente, les cuento el problema: tengo el sigiente prototipo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original MysqlAjx = function ( tabla , debug ) ...
  #1 (permalink)  
Antiguo 02/01/2014, 10:33
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 7 meses
Puntos: 320
No puedo acceder a propiedad de prototipo

Hola gente, les cuento el problema:

tengo el sigiente prototipo:

Código Javascript:
Ver original
  1. MysqlAjx = function ( tabla , debug )
  2. {
  3.     debug || (debug = false);
  4.     this.constructor( tabla, debug );
  5. }
  6.  
  7. MysqlAjx.prototype =
  8. {
  9.         '_nombreTabla' : '',
  10.     'registro' : { },
  11.    
  12.     'resultados' : [ 1, 2, 3 ],
  13.    
  14.     'traer' : function (nroFilas , nroPagina , contar , callback)
  15.     {
  16.         nroFilas        || ( nroFilas       = 0 );
  17.         nroPagina       || ( nroPagina      = 0 );
  18.         contar          || ( contar         = false );
  19.         callback        || ( callback       = false );
  20.         this.enviarPost( 'select' , { filas :  nroFilas, pagina : nroPagina, total : contar } ,function( info )
  21.         {
  22.             if(!info.error)
  23.             {
  24.                 this.resultados = [ ];
  25.                 for(var i=0; i<info.datos.length; i++)
  26.                 {
  27.                     this.resultados[i] = { };
  28.                     for (var property in info.datos[i])
  29.                     {
  30.                         this.resultados[i][property] = info.datos[i][property];
  31.                     }
  32.                 }
  33.                 if(this.resultados.length > 0)
  34.                     this.registro = this.resultados[0];
  35.             } else {
  36.                 this.registro   = { };
  37.                 this.resultados = [ ];
  38.             }      
  39.            
  40.             // Aca, this.resultados tiene todos los valores que corresponde y se los puede ver y acceder sin problemas.
  41.             if(callback)
  42.                 callback(info);
  43.         } );
  44.     }
  45. }

Esa es solo la parte relevante ya que es bastante mas grande que eso.

Ahora bien, lo utilizo asi:

Código Javascript:
Ver original
  1. var test = new MysqlAjx('test', true);
  2. var Self = test;
  3. test.traer(3, 1, true, function(datos){
  4. // Aca, veo a la variable resultados asi: 'resultados' : [ 1, 2, 3 ],
  5. // Es decir, se comporta como estatica, ya que esos valores no existen mas
  6. // Fueron (o debieron) ser pisados en la funcion traer ya que dentro de ella, antes de llamar a este callback estaban asignados bien.
  7. alert(Self.resultados.length);             
  8.             });

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.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios

Última edición por NSD; 02/01/2014 a las 11:29

Etiquetas: funcion, propiedad, prototipo, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:09.