В новом ES6 классе синтаксис не представляется возможным сделатькласса статические свойства
class Person {
this.type = 'person';
Но если я определяю свойство внутри застройщик it works:
class Person {
constructor(name) { //class constructor
this.name = name;
this.type = 'person';
}
Я знаю, что возможность иметь свойства вне методов is being discussed, но на сегодняшний день и что касается спецификаций ES6, это невозможно.
Является ли мое решение правильным способом определения статических свойств для класса (по семантическим причинам я определил эти свойства внутри конструктора, но, похоже, работает внутри других методов)? Есть ли способ лучше?
Я просмотрел spec в Method Defenition и не нашел никакой информации об этом.
Зависит от того, как вы хотите получить к ним доступ. Эта реализация дает каждому экземпляру член с именем 'type', но если вы хотите, чтобы статика была больше похожа на то, как C# делает это, вы делаете что-то вроде Person.type = 'person''. Тогда он будет привязан только к классу, а не к отдельным экземплярам. –
@MikeC Есть много случаев для таких свойств, у меня не было особых соображений. Если мы расширим его [мы все еще можем использовать/изменить] (http://www.es6fiddle.net/ijufl5c6/) это свойство. Мой вопрос больше в строках вроде: _ это нормально делать? _, Или есть более правильный способ? _, Который можно сделать изнутри класса. – Rikard
Тогда я бы сказал, да, все в порядке. [Хотя я бы не назвал эти «статические свойства»] (http://stackoverflow.com/a/1535687/371184). Это «свойства экземпляра» или просто свойства. –