Javascript es6类并添加显式原型以跨类实例共享
所以,我有一门课:Javascript es6类并添加显式原型以跨类实例共享,javascript,ecmascript-6,es6-class,Javascript,Ecmascript 6,Es6 Class,所以,我有一门课: 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 // ad
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,但同样,这是一种仍然必须“访问/更新”“共享变量资源”的方法
有没有更直观的方法?当然,这是一个非常简化的版本-但是尝试使用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
XYZ类{
构造函数(){
static SHOES=new Set();//那么您想要类的静态成员吗?我试过了,但没有真正起作用。您试过什么,问题出在哪里?我用我试过的方法更新了原始问题。谢谢。“如果其他实例没有添加鞋,我想添加鞋”听起来真是个糟糕的主意。这是一个全局变量,有其所有缺点。最好创建一个显式的ShoeStore
类,并将其实例传递给XYZ实例。
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