gpt4 book ai didi

javascript - 模仿 javascript 类中的静态属性

转载 作者:行者123 更新时间:2023-12-02 14:05:54 27 4
gpt4 key购买 nike

在 es6 中保留模拟静态属性的类的属性的最佳方法是什么?

使用原型(prototype)链中创建的属性安全吗?

class Employee {
constructor(name, creator) {
this.name = name;
if(! (creator in Employee.prototype)){
Employee.prototype[creator] = 0;
}
Employee.prototype[creator]++;
}
static count(creator) {
return Employee.prototype[creator];
}
}


var y = new Employee("Jack", "x");
var z = new Employee("John", "y");
var jh = new Employee("John", "y");

console.log(Employee.count('x'), Employee.count('y'));

最佳答案

安全吗?是的。凌乱的?是的。更好的选择?你打赌。

您应该将计数器逻辑移出构造函数以对其进行一些清理。尝试这样的事情:

class Employee {
static count(creator) {
return Employee[creator] || 0;
}

static increment(creator) {
Employee[creator] = Employee.count(creator) + 1;
}

constructor(name, creator) {
this.name = name;
Employee.increment(creator);
}
}

请注意不要使用创建者名称,例如 countincrementconstructorprototype 等。或者您可以覆盖您的类属性。

关于javascript - 模仿 javascript 类中的静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40045309/

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