Ver Mensaje Individual
  #13 (permalink)  
Antiguo 15/05/2014, 06:37
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 1 mes
Puntos: 270
Respuesta: funciones callbacks ?

En el código anterior, no puedes usar this, ya que no tienes un objeto función al que aplicarlo (no se ha hecho "new").
Más o menos, lo que quieres hacer es:
Código Javascript:
Ver original
  1. var q=(
  2.         function()
  3.        {
  4.                var contador=0; // Variable local a la funcion autoejecutable.
  5.                return function(){console.log(contador);contador++;};
  6.        })();
  7. q();
  8. q();
  9. q();

Esta construccion es muy interesante, por otro motivo.Este código:
Código Javascript:
Ver original
  1. var MyClass=(function(){
  2.         var contador=0;
  3.         function privateMethod(){
  4.              console.debug("called private:"+contador);
  5.               contador++;
  6.          };
  7.          return function()
  8.          {
  9.                 this.callPrivate=function(){privateMethod();};
  10.           };
  11.     })();
  12.  
  13. var instance=new MyClass();
  14. instance.callPrivate(); // escribe en consola : called private 0
  15. instance.callPrivate(); // escribe en consola : called private 1
  16. instance.callPrivate();  // escribe en consola : called private 2
  17. instance.privateMethod() ; // escribe en consola: TypeError: undefined is not a function
  18. instance.contador; // undefined
Como se ve, el closure y la funcion autoinvocada hace que privateMethod y contador sólo sean accesibles desde dentro de una instancia del objeto funcion retornado por la funcion autoinvocada.Esto es una forma de simular variables y métodos privados en clases javascript.