Cita: [...] ¿Como puedo tener acceso a lo que esta dentro de esa funcion? el alert no se ejecuta, [...]
eso ya te lo explique en la respuesta anterior. te falto invocar esa funcion. fijate en el esquema colorido que mostre y lo comentado, te falto un par de parentesis (señalado en verde) para invocar dicha función.
Código:
(function(){ alert('a') })();
Cita: [...] como es eso de "la mayoria de las veces es una tecnica de encapsulacion [...]
encapsulamiento es la tecnica de ocultar datos. en javascript, se logra mediante cierres o
clausura (closure). basicamente trata de
variables locales que son accesible desde una funcion que esta en el mismo alcance o ambito (
scope) pero que esta funcion luego es devuelta a un entorno exterior. por ejemplo.
Código:
var bar = (function(){
var foo;
return {setFoo: function(value){return foo = value;},
getFoo: function(){return foo;}};
})();
alert(bar.getFoo()) // muestra undefined, aun no contiene valor;
bar.setFoo("minkweb");
alert(bar.getFoo()); // muestra "minkweb";
esta funcion envuelta en el par de parentesis crea la variable local
foo, y luego devuelve un objeto literal que contiene dos funciones: setFoo y getFoo. setFoo asigna un valor a la variable
foo pasado como argumento, mientras getFoo devuelve el valor contenido en la variable
foo. ahora, ¿como puedes accesar a
foo sin usar ninguna de estas funciones? la respuesta es no se puede porque es una variable local de otra funcion, y las variables locales no son accesible fuera de su entorno. por tanto, no hay forma de modificar la variable sino con funciones especificamente provistas para tal efecto.