实现某个类的静态方法,调用后可得到此构造函数/class已经new了多少个实例?

cjwj
  • 628

调用:ClassA.getInstanceNumber()

回复
阅读 1.4k
3 个回答
✓ 已被采纳

呐,这是es6不用装饰器node和最新chrome可用版

class ClassA {
  constructor() {
    ClassA.instanceNumber = (ClassA.instanceNumber || 0) + 1;
  }

  static getInstanceNumber() {
    return ClassA.instanceNumber || 0;
  }
}

console.log(ClassA.getInstanceNumber());

let a = new ClassA();

console.log(ClassA.getInstanceNumber());

let b = new ClassA();

console.log(ClassA.getInstanceNumber());

看起来比较适合用 ES6 的修饰器 来做。

@countable
class ClassA {
  // ....
}

let count = 0;
function countable() {
  count++;
}
var Test = (function () {
    var count = 0;
    function Test() {
        if (!(this instanceof Test)) {
            return new Test();
        }
        count++;
    }
    Test.getInstanceNumber = function () {
        return count;
    }
    return Test;
})();

Test();
new Test();
new Test();
console.log(Test.getInstanceNumber());//3
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏