Массив-как поле класса в js
хочу сделать массив как поле класса.
1) Пытался через конструктор(передавая ему другой массив) инициализировать элементы массива:
В итоге такая ошибка:
2) Не понял,почему возникла ошибка (из п1) и решил указать массив как поле класса:
В итоге получилась такая ошибка:
Я до этого писал на плюсах,где очень просто и легко создавать расличные private,public поля,инициализировать их в конструкторе и делать какие-то действия. Первый раз пишу на js,опыта вообще 0(просто проект для вуза нужно сделать на js)
И вообще не понимаю,что происходит,помогите пожалуйста!
P.S: писал в VsCode ,использовал расширение jshint . ES6 .
Заранее спасибо!
Ответы (1 шт):
Дело в том, что в Js поля класса объявляются в конструкторе. Да, это смотрится странно, но это так. В итоге надо его вначале объявить, а потом пользоваться, если нужно
class Player {
constructor(initArray) {
this.array = []; // <--- вот это прокатит
for (let i = 0; i < initArray.length; ++i) {
this.array[i] = initArray[i];
}
}
}
Поэтому возникла как и первая так и вторая ошибка. Первая - потому что свойство не было объявлено в конструкторе. Вторая - потому что так писать свойства классов нельзя. Но можно в виде геттеров и сеттеров (properties must be methods)



