2011-08-30 12 views
5

Soy un principiante con JavaScript así que por favor sea paciente =)función count llama

Estoy tratando de escribir una función que cuenta el número de veces que se llama. Lo que tengo hasta ahora es una función con un contador que se incrementa de forma explícita:

var increment = function() { 
    var i = 0; 
    this.inc = function() {i += 1;}; 
    this.get = function() {return i;}; 
}; 

var ob = new increment(); 
ob.inc(); 
ob.inc(); 
alert(ob.get()); 

Pero me pregunto cómo llamar solamente ob();, por lo que la función podría incrementar las llamadas realizadas a sí mismo de forma automática. ¿Es posible? y si lo es, cómo?

Respuesta

7
var increment = function() { 
    var i = 0; 
    return function() { return i += 1; }; 
}; 

var ob = increment(); 
+2

+1 para tirar cierres a un novato :) – naveen

+1

1. @naveen: El novato parece dirigirse por su cuenta. :) – Shef

+0

@Shef: dije que era bueno. Fue un tiempo antes de darme cuenta de que había cierres. Pero entonces js era mi segundo idioma. una pequeña ventaja que tiene cajas de alertas :) – naveen

0
ob = function(){ 
    ++ob.i || (ob.i=1); 
    return ob.i; 
}