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 originalvar q=(
function()
{
var contador=0; // Variable local a la funcion autoejecutable.
return function(){console.log(contador);contador++;};
})();
q();
q();
q();
Esta construccion es muy interesante, por otro motivo.Este código:
Código Javascript
:
Ver originalvar MyClass=(function(){
var contador=0;
function privateMethod(){
console.debug("called private:"+contador);
contador++;
};
return function()
{
this.callPrivate=function(){privateMethod();};
};
})();
var instance=new MyClass();
instance.callPrivate(); // escribe en consola : called private 0
instance.callPrivate(); // escribe en consola : called private 1
instance.callPrivate(); // escribe en consola : called private 2
instance.privateMethod() ; // escribe en consola: TypeError: undefined is not a function
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.