Как объявить объект в конструкторе класса javascript es6 - PullRequest
0 голосов
/ 25 мая 2018

Я объявил свойство в конструкторе класса и доступ к нему через методы, которые объявлены как «статические», с «этим», и оно недоступно.Как получить доступ к переменным конструктора (класса) внутри статических методов?

export class Reporter {
    constructor() {
        this.jsonReports = path.join(process.cwd(), "/reports/json")

        this.cucumberReporterOptions = {
            jsonFile: targetJson,
            output: htmlReports + "/cucumber_reporter.html",
            reportSuiteAsScenarios: true,
            theme: "bootstrap",
        }
    }

    static createHTMLReport() {
        try {
            reporter.generate(this.cucumberReporterOptions);
        } catch (err) {

        }
    }
}

Обновлено:

Согласно "@CodingIntrigue", я сделал это в файле 'reporter.js'и вызвал метод как Reporter.createHTMLReport () в моем файле конфигурации, и он работает, как ожидалось.Но не уверен, что это лучшая практика.

const jsonReports = path.join(process.cwd(), "/reports/json")

const cucumberReporterOptions = {
    jsonFile: targetJson,
    output: htmlReports + "/cucumber_reporter.html",
    reportSuiteAsScenarios: true,
    theme: "bootstrap",
}

export class Reporter {
    static createHTMLReport() {
        try {
            reporter.generate(cucumberReporterOptions);
        } catch (err) {

        }
    }
}

1 Ответ

0 голосов
/ 25 мая 2018

Если вы хотите продолжить использовать синтаксис class, вы можете просто установить статические свойства jsonReports и cucubmerReporterOptions:

export class Reporter {
    static createHTMLReport() {
        try {
            reporter.generate(Reporter.cucumberReporterOptions);
        } catch (err) {

        }
    }
}

Reporter.jsonReports = path.join(process.cwd(), "/reports/json")

Reporter.cucumberReporterOptions = {
    jsonFile: targetJson,
    output: htmlReports + "/cucumber_reporter.html",
    reportSuiteAsScenarios: true,
    theme: "bootstrap",
}
...