Я охотился вокруг, чтобы получить четкий ответ на этот вопрос, и большая часть всплывающих окон по-прежнему связана со старым (или я должен сказать «традиционным») способом определения классы с использованием function
.Современный способ создания статической или переменной класса для класса Javascript
Согласно this SO answer,
Свойства класса не поддерживаются в ES2015.
Насколько я могу сказать, единственный способ, чтобы добавить статическую переменную в класс, как:
https://jsfiddle.net/abalter/fknwx3n4/
class C {
constructor(x) {
console.log("in constructor " + x);
this.x = x;
this.add(this.x);
}
add(x) {
console.log("in add " + x);
C.alist.push(x);
}
show() {
console.log("in show");
console.log(C.alist);
}
}
// MUST be done outside of actual class definition.
C.alist = [];
c1 = new C(5);
c1.show();
c2 = new C(10);
c1.show();
c2.show();
Является ли это конец истории? Просто кажется странным, что он не сможет сделать это ВНУТРИ определения класса.
Да, это конец истории. Нет ничего плохого в том, чтобы поместить такие свойства после определения класса, btw – Bergi
ES7 поддерживает свойства класса. Но нет, это не конец истории в ES2015. Массив может быть установлен в конструкторе как свойство экземпляра. – undefined
Ваш пример использования случай странный. Переменные статические свойства являются экземпляром одностороннего антипаттера. – Bergi