所以,我有一个班级:
class XYZ {
constructor(name) {
if (!new.target) new XYZ(name);
this.name = name;
}
run() {
}
walk() {
}
addShoe() {
// I want to add a shoe here IF it hasn't already been
// added, by any other instance
}
}
现在,我需要所有实例共享一个变量,即:SHOES。
我想要做到这一点的唯一方法,有两种方法是在类外添加变量(模块顶部)或将其放在原型上。 即
我尝试过添加静态变量,但没有工作。当然我可以使用set / get,但是再次 - 这是一种仍然需要“访问/更新”“共享变量资源”的方法。
let SHOES = new Set();
//or
XYZ.prototype.SHOES = new Set();
class XYZ {
constructor(name) {
if (!new.target) new XYZ(name);
this.name = name;
}
run() {
}
walk() {
}
}
有更直观的方法吗?当然,这是一个非常简化的版本 - 但试图采用es6'做事的方式'。
我结束了下面的事情。但它似乎仍然是错误的。你的想法?
XYZ.SHOES = new Set();
我相信我也尝试了以下内容并且无法正常工作:
class XYZ {
constructor() {
static SHOES = new Set(); // <-- didn't work
this.constructor.SHOES = new Set(); // <-- didn't work
}
}
XYZ.SHOES = new Set(); // <- worked
let SHOES = new Set(); // <-- worked
当然,在模块中声明一个全局工作并且仅仅分配给该类工作,但这些似乎很脏。有关更简洁方法的任何想法吗?