In the following code, I would like to have a counter to keep track of the number of Person objects created. This code is not doing so, how would I accomplish that?
function Person(){
this.name = "Peter";
this.counter = this.counter + 1;
alert(this.counter);
}
Person.prototype.counter = 0;
var p1 = new Person;
var p2 = new Person;
function Person(){
this.name = "Peter";
Person.counter++;
alert(Person.counter);
}
Person.counter = 0;
var p1 = new Person();
var p2 = new Person();
Make the "static" variable a property of the Person
function, rather than the prototype
, and use Person
instead of this
inside the constructor.
This is possible because JavaScript functions are first-class (i.e. they are objects), so can have properties of their own.
Here's a working example of the above code.