首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Javascript中声明静态变量

如何在Javascript中声明静态变量
EN

Stack Overflow用户
提问于 2011-09-05 19:16:12
回答 5查看 96.1K关注 0票数 38

在下面的代码中,我希望有一个计数器来跟踪创建的Person对象的数量。这段代码没有做到这一点,我该怎么做呢?

代码语言:javascript
复制
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;
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-05 19:21:25

代码语言:javascript
复制
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

票数 74
EN

Stack Overflow用户

发布于 2011-09-06 06:49:23

您还可以将您的计数器变量设置为"private",将其声明为闭包的局部变量。这是拥有类似于私有静态变量的东西的最佳方式:

代码语言:javascript
复制
var Person = (function() {

    var counter = 0;

    return function() {
        counter++;
        this.name = "Peter";
        alert(counter);
    };
})();


var p1 = new Person();
var p2 = new Person();

示例:https://jsfiddle.net/patodiblasi/67wucsqx/

票数 12
EN

Stack Overflow用户

发布于 2011-09-05 19:21:02

没有静态属性。如果需要,可以将数据存储在Person函数上。

代码语言:javascript
复制
function Person(){
    this.name = "Peter";
    Person.counter++;
    alert(Person.counter);
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7307243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档