我知道以前有这方面的问题,但我已经尝试了答案,但仍然因错误而失败:__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; } }}
2 回答
![?](http://img1.sycdn.imooc.com/533e4cf4000151f602000200-100-100.jpg)
小唯快跑啊
TA贡献1863条经验 获得超2个赞
我很确定问题在于您从静态函数调用 __salaryTypeFromWeekdays,该函数没有“this”的实例,因为它在类上而不是在实例上运行。所以,你应该要么改造__salaryTypeFromWeekdays静态functino,或通过类的__updateSalaryType实际实例,并使用它像: instance.__salaryTypeFromWeekdays
。
![?](http://img1.sycdn.imooc.com/5333a1bc00014e8302000200-100-100.jpg)
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
不要bind在构造函数内部做——简单地定义方法,就像你所做的那样应该作为一个实例方法工作。
如果你想要一个静态方法,你应该使用static:
static __salaryTypeFromweekday(status) {
// ...
}
添加回答
举报
0/150
提交
取消