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:
en x se van a almacenar 3 funciones como si fuera un objeto?
y yo podria llamarlas asi:
Código:
x.value();
x.increment();
, etc?
no esta usando la funcion counter como si fuera un objeto?
y si yo hago esas operaciones y despues hago
se va a formatear la variable privada a 0 no?