在下面的代码中,我希望有一个计数器来跟踪创建的Person对象的数量。这段代码没有做到这一点,我该怎么做呢?
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;
发布于 2011-09-05 19:21:25
function Person(){
this.name = "Peter";
Person.counter++;
alert(Person.counter);
}
Person.counter = 0;
var p1 = new Person();
var p2 = new Person();
使“静态”变量成为Person
函数的属性,而不是prototype
,并在构造函数中使用Person
而不是this
。
这是可能的,因为JavaScript函数是一流的(即它们是对象),所以可以有自己的属性。
下面是上述代码的working example。
发布于 2011-09-06 06:49:23
您还可以将您的计数器变量设置为"private",将其声明为闭包的局部变量。这是拥有类似于私有静态变量的东西的最佳方式:
var Person = (function() {
var counter = 0;
return function() {
counter++;
this.name = "Peter";
alert(counter);
};
})();
var p1 = new Person();
var p2 = new Person();
发布于 2011-09-05 19:21:02
没有静态属性。如果需要,可以将数据存储在Person
函数上。
function Person(){
this.name = "Peter";
Person.counter++;
alert(Person.counter);
}
https://stackoverflow.com/questions/7307243
复制相似问题