有没有一种方法可以计算类中的实例?

时间:2019-05-12 20:24:43

标签: javascript class instance

我需要跟踪从所述类内部创建了多少个类实例。我本机需要每个实例都知道它是“哪个”。

我唯一想到的方法是使用全局变量,但是...可能有更好的方法。

这是我要避免的事情:

class MyClass {
    this.instanceId = (window.instanceCount == undefined) ? 0 : window.instanceCount + 1;
    window.instanceCount = this.instanceId;
    ...
}

3 个答案:

答案 0 :(得分:1)

您可以为“类”静态添加一个计数器。在这里,我使用一个符号来防止名称冲突。请注意,在递增计数器之前,我会检查您是否将Burrito用作函数或类。

function Burrito() {
  if (this instanceof Burrito) {
    Burrito[Burrito.counterName]++;
  }
}

Burrito.counterName = Symbol();
Burrito[Burrito.counterName] = 0;
Burrito.count = () => Burrito[Burrito.counterName];

new Burrito(); // 1
new Burrito(); // 2
Burrito();     // skipped
new Burrito(); // 3

console.log(Burrito.count());

答案 1 :(得分:-1)

您可以使用static属性,并在constructor()

中增加它

class MyClass{
  static count = 0;
  constructor(){
    this.instanceId = ++MyClass.count;
  }
}
let x = new MyClass();
let y = new MyClass();

console.log(MyClass.count) //2

console.log(x.instanceId); //1
console.log(y.instanceId); //2

答案 2 :(得分:-1)

该属性不必在全局范围内:

class MyClass {
    static count = 0;
    instanceId = MyClass.count++;
}