Не удается установить свойства в классе JavaScript - PullRequest
0 голосов
/ 04 сентября 2018

Я просто устанавливаю свойства в классе в JavaScript:

class BookingReports extends ReportsInterface{ 
    var categoryID;
    constructor() {
        super();
    }

    init(CatID)
    {
        this.categoryID=CatID;            
    }
}

Но JavaScript вообще не принимает переменную и выдает ошибку "неожиданный идентификатор".

enter image description here

Я не понимаю, что такое синтаксическая ошибка. Это из-за наследования или ключевого слова super? Я даже пытался использовать связывание со всей этой декларацией. Но это не работает.

1 Ответ

0 голосов
/ 04 сентября 2018

var categoryID просто не к месту. Вы не объявляете переменные на уровне class; Вы объявляете переменные в конструкторе или методах.

В вашем случае вы, вероятно, вообще не хотите объявлять переменную; вместо этого создайте свойство в своем конструкторе:

class BookingReports extends ReportsInterface{ 
    constructor() {
        super();
        this.categoryID = /*...some default value...*/;
    }

    init(CatID)
    {
        this.categoryID=CatID;            
    }
}

Примечание: Наличие метода init не имеет особого смысла; для этого и нужен конструктор. Итак:

class BookingReports extends ReportsInterface { 
    constructor(catID) {
        super();
        this.categoryID = catID;
    }
}

В какой-то момент предложение о полях класса достигнет стадии 4, после чего вы сможете "объявить" свойства на уровне class, если захотите:

// Valid if/when the class fields proposal advances
class BookingReports extends ReportsInterface { 
    categoryID; // Declares the property
    constructor(catID) {
        super();
        this.categoryID = catID;
    }
}

Если вы инициализируете свойство в конструкторе, в этом нет особого смысла; но это может быть полезно для того, чтобы сообщить читателю (и движку JavaScript) стандартную «форму» вашего объекта заранее, а не заставлять их (и это) анализировать код конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...