无法在JavaScript类中设置属性

无法在JavaScript类中设置属性,javascript,constructor,properties,Javascript,Constructor,Properties,我只是用JavaScript在类中设置属性: class BookingReports extends ReportsInterface{ var categoryID; constructor() { super(); } init(CatID) { this.categoryID=CatID; } } 但JavaScript根本不接受变量,并给出错误“意外标识符” 我不知道什么是语

我只是用JavaScript在类中设置属性:

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

    init(CatID)
    {
        this.categoryID=CatID;            
    }
}
但JavaScript根本不接受变量,并给出错误“意外标识符”


我不知道什么是语法错误。这是因为继承还是因为
super
关键字?我甚至尝试使用绑定来处理整个声明。但是它不起作用。

var categoryID只是不适合。您不在
级别声明变量;在构造函数或方法中声明变量

在您的情况下,您可能根本不想声明变量;相反,请在构造函数中创建属性:

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阶段,此时您将能够在
级别“声明”属性,如果您希望:

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

如果您在构造函数中初始化属性,那么没有太多的意义;但是,它可以用于提前告诉读者(和JavaScript引擎)对象的标准“形状”,而不是让他们(和JavaScript引擎)分析构造函数的代码。

var categoryID
只是不合适而已。您不在
级别声明变量;在构造函数或方法中声明变量

在您的情况下,您可能根本不想声明变量;相反,请在构造函数中创建属性:

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阶段,此时您将能够在
级别“声明”属性,如果您希望:

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

如果您在构造函数中初始化属性,那么没有太多的意义;但是,它可以用于提前告诉读者(和JavaScript引擎)对象的标准“形状”,而不是让他们(和JavaScript引擎)分析构造函数的代码。

在构造函数中定义变量,在构造函数和tryyes中定义变量。这是有效的。我可以在javascript中使用多个构造函数吗?我尝试过,但它给出了错误“一个类可能只有一个构造函数”。我的最终目的是在同一个js文件的document.ready上创建另一个类实例,并在事件控件上使用class方法。我怎样才能达到目标that@NeerajVerma-我相信我昨天提出了这个建议,但值得你花时间仔细阅读。只能有一个构造函数,因为JavaScript没有重载(相反,所有构造函数和方法都可以用任意数量的任何类型的参数调用)。是的。这是有效的。我可以在javascript中使用多个构造函数吗?我尝试过,但它给出了错误“一个类可能只有一个构造函数”。我的最终目的是在同一个js文件的document.ready上创建另一个类实例,并在事件控件上使用class方法。我怎样才能达到目标that@NeerajVerma-我相信我昨天提出了这个建议,但值得你花时间仔细阅读。只能有一个构造函数,因为JavaScript没有重载(相反,所有构造函数和方法都可以用任意数量的任何类型的参数调用)。