如何从 Javascript 中的同一个 class 中调用另一个方法

How do I call another method from within the same class in Javascript

我知道之前有这方面的问题,但我已经尝试了答案但仍然失败并出现错误:

__salaryTypeFromWeekday is not a function.

我试过在构造函数中使用 "bind","this" 调用函数,还更改函数声明以包含 "this" 关键字。

class SalaryType {
  constructor(selectedSalaryType) {
    this.selectedSalaryType = selectedSalaryType;
    this.__salaryTypeFromWeekday = this.__salaryTypeFromWeekday.bind(this)
  }

  get selected() {
    return this.selectedSalaryType;
  }

  static __updateSalaryType(typeOfDayStr, statusStr)
  {
    var typeOfDay = parseInt(typeOfDayStr, 10);
    var status = parseInt(statusStr, 10);
    switch(typeOfDay) {
      case WEEK_DAY:
        this.selectedSalaryType = this.__salaryTypeFromWeekday(status);
        break;
    }
    return this.selectedSalaryType;
  }

  __salaryTypeFromWeekday(status) {
    switch(status) {
      case WORK_ATTENDANCE:
        return SALARY_KIND_NORMAL;
      default:
        return null;
    }
  }
}

不要在构造函数中执行 bind - 简单地定义您已经完成的方法应该作为实例方法工作。

如果你想要一个静态方法,你应该使用static:

static __salaryTypeFromweekday(status) {
  // ...
}

我很确定问题是您从 static 函数调用 __salaryTypeFromWeekdays,它没有 "this" 的实例,因为它在 class 而不是实例上运行。因此,您应该将 __salaryTypeFromWeekdays 转换为静态函数,或者将 __updateSalaryType 传递给 class 的实际实例并像这样使用它: instance.__salaryTypeFromWeekdays.