这是代码,我为此一直奋斗了几个小时,其想法是跟踪创建了多少实例,但也可以调用静态方法和更改/更新静态成员。有类似的问题,但是我无法实施任何解决方案。
// object constructor
function Foo() {
this.publicProperty = "This is public property";
}
// static property
Foo.staticProperty = "This is static property";
// static method
Foo.returnFooStaticProperty = function() {
return Foo.staticProperty;
};
console.log("Static member on class: " + Foo.staticProperty); // This is static property
console.log("Result of static method: " + Foo.returnFooStaticProperty()); //This is static property
var myFoo = new Foo();
console.log("myFoo static property is: " + myFoo.staticProperty); // undefined
为了简单起见,我在这里更改了构造函数和成员名称。我认为发生的事情很明显。我希望构造函数对象和实例都共享相同的静态属性。
我可以访问构造函数对象上的静态成员,但是在实例上却无法定义。
编辑:我重新阅读了您的问题,并且此代码解决了您所说的实际问题:
JavaScript:
function Foo() {
this.publicProperty = "This is public property";
Object.getPrototypeOf(this).count++;
}
Foo.prototype.count = 0;
console.log(new Foo().count, new Foo().count, Foo.prototype.count);
如果释放了对象以进行垃圾回收,这不会自动减少计数,但是您可以使用delete然后手动减少。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句