我想弄清楚设置静态(或类)属性ES6类的替代方法,然后在类的新实例创建后更改它。例如 - 假设我有一个名为Geo的类,我需要一个名为'all'的静态属性,它会给我所有Geo类实例的数组。ES6类 - 更新静态属性
这个版本的作品:
class Geo {
constructor(name){
this.name = name;
Geo.all.push(this);
}
}
Geo.all = [];
ruby = new Geo("Ruby");
rocks = new Geo("Rocks");
console.log(Geo.all.length); // => 2
我宁愿没有设置类定义的酒店门外,虽然。我已经尝试了一些东西,但似乎无法在类中创建静态属性,我可以从构造函数中进行更新。
我还应该提到我需要能够在浏览器(Chrome)中完成此操作,而无需使用Babel或类似工具。
这里有一些事情我已经试过的例子:
class Geo {
constructor(name){
this.name = name;
Geo.all.push(this);
}
static get all() {
return [];
}
}
ruby = new Geo("Ruby");
rocks = new Geo("Rocks");
console.log(Geo.all.length); // => 0
而另一
class Geo {
constructor(name){
this.name = name;
Geo.all.push(this);
}
static all = [];
}
ruby = new Geo("Ruby");
rocks = new Geo("Rocks");
console.log(Geo.all.length); // => error unexpected "="
任何帮助将不胜感激。
在ES6中没有其他方法可以做到这一点。 – Bergi
Geo.all = []'有什么问题? – dfsq
你不应该有一个全局的实例集合 - 这将导致内存泄漏和模块化(例如可测试性)问题 – Bergi