Я пытаюсь найти альтернативные способы установить статическое (или класс) свойство класса ES6, а затем изменить его после создания новых экземпляров класса.
Например, допустим, у меня есть класс с именем Geo
, и мне нужно статическое свойство, называемое all
, которое даст мне массив всех экземпляров класса Geo
.
Эта версия работает:
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 "="