Javascript构造函数来计算实例数

Pro*_*kie 2 javascript constructor object count

好的,所以我想在javascript中创建一个构造函数,它将计算使用这个构造函数创建的实例总数.

var Component = function(name) {
    this.name = name;
    this.add = function(){this.prototype.countInstances++;};
    this.add();
};
Run Code Online (Sandbox Code Playgroud)

Component.prototype.countInstances=0;
Run Code Online (Sandbox Code Playgroud)

正如我所理解的那样,countInstances变量被添加到原型中,并且将像所有实例的静态副本一样充当我的计数器.

这段代码的问题是,因为我在构造函数之后声明了countInstances,所以我在构造函数代码中遇到了错误.怎么纠正这个?

rro*_*and 5

如果您希望将属性附加到类本身,而不是类的实例,则不希望将该属性添加到prototype:

var Component = function(name) {
  this.name = name;
  Component.instanceCount++;
};

Component.instanceCount = 0;
Run Code Online (Sandbox Code Playgroud)

这样,您将每个名称分配给其实例,并将总实例计数分配给静态类:

var foo = new Component('bar');
var baz = new Component('qux');

console.info(foo.name, baz.name, Component.instanceCount);

>> 'bar', 'qux', 2
Run Code Online (Sandbox Code Playgroud)