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

我知道以前有这方面的问题,但我已经尝试了答案,但仍然因错误而失败:


__salaryTypeFromWeekday 不是函数。


我尝试在构造函数中使用“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;

    }

  }

}


狐的传说
浏览 707回答 2
2回答

小唯快跑啊

我很确定问题在于您从静态函数调用 __salaryTypeFromWeekdays,该函数没有“this”的实例,因为它在类上而不是在实例上运行。所以,你应该要么改造__salaryTypeFromWeekdays静态functino,或通过类的__updateSalaryType实际实例,并使用它像: instance.__salaryTypeFromWeekdays。

素胚勾勒不出你

不要bind在构造函数内部做——简单地定义方法,就像你所做的那样应该作为一个实例方法工作。如果你想要一个静态方法,你应该使用static:static __salaryTypeFromweekday(status) {  // ...}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript