Código:
var counter = (function() { var privateCounter = 0; function changeBy(val) { privateCounter += val; } return { increment: function() { changeBy(1); }, decrement: function() { changeBy(-1); }, value: function() { return privateCounter; } }; })(); alert(counter.value()); /* Alerts 0 */ counter.increment(); counter.increment(); alert(counter.value()); /* Alerts 2 */ counter.decrement(); alert(counter.value()); /* Alerts 1 */
lo que retorna la funcion counter son 3 funciones que acceden a una variable privada, pero despues lo usa como si fuera un objeto, para usar las funciones no tendria q llamar primero ala funcion asi: counter().value() ? esta llamando la funcion value como si llamara un metodo que tenga un objeto...
y una pregunta, si yo hago esto:
Código:
en x se van a almacenar 3 funciones como si fuera un objeto?var x = count();
y yo podria llamarlas asi:
Código:
, etc?x.value(); x.increment();
no esta usando la funcion counter como si fuera un objeto?
y si yo hago esas operaciones y despues hago
Código Javascript:
se va a formatear la variable privada a 0 no? Ver original
counter()