bugfix> javascript > 投稿

クラスコンストラクターでプロパティを宣言し、「this」で「static」として宣言されているメソッドを通じてアクセスしますが、アクセスできません。静的メソッド内のコンストラクター(クラス)変数にアクセスする方法は?

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 件
  • 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",
    }
    
    

あなたの答え