我一直在寻找一个明确的答案,大部分弹出的内容仍然与使用 function
定义类的旧方法(或者我应该说“传统的”)有关。
根据 this SO answer ,
Class properties are not supported in ES2015.
据我所知,向类添加静态变量的唯一方法是:
https://jsfiddle.net/abalter/fknwx3n4/
class C {
constructor(x) {
console.log("in constructor " + x);
this.x = x;
this.add(this.x);
}
add(x) {
console.log("in add " + x);
C.alist.push(x);
}
show() {
console.log("in show");
console.log(C.alist);
}
}
// MUST be done outside of actual class definition.
C.alist = [];
c1 = new C(5);
c1.show();
c2 = new C(10);
c1.show();
c2.show();
故事就这样结束了吗?无法在类定义中执行此操作似乎很奇怪。
最佳答案
您可以在类定义后立即调用初始化所有静态成员的静态函数,然后可选择删除该函数。 (可能重置静态变量是一项功能?)
这将允许您将所有静态变量保留在类声明中。
class C {
static init() {
C.alist = [];
}
constructor(x) {…}
add(x) {…}
show() {…}
}
C.init();
delete C.init;
另一种选择是在构造函数中初始化静态变量,但这需要在使用静态变量之前至少实例化一个对象。
class C {
constructor(x) {
C.alist = C.alist || [];
…
}
add(x) {…}
show() {…}
}
关于javascript - 为 Javascript 类创建静态或类变量的现代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982610/