Массив-как поле класса в 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)

→ Ссылка