gpt4 book ai didi

javascript - 为 Javascript 类创建静态或类变量的现代方法

转载 作者:数据小太阳 更新时间:2023-10-29 04:49:12 35 4
gpt4 key购买 nike

我一直在寻找一个明确的答案,大部分弹出的内容仍然与使用 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/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com