Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/07/2010, 12:53
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: llamado extraño funcion (funcion(){})

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.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 26/07/2010 a las 13:01