【发布时间】:2019-07-30 07:44:35
【问题描述】:
我知道以前有过这样的问题,但我已经尝试了答案,但仍然失败并出现错误:
__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;
}
}
}
【问题讨论】:
-
你怎么称呼它?
-
this.__salaryTypeFromWeekday(status);它返回一些东西并将被放入 this.selectedSalaryType.
-
您的代码是一个类定义。您可以发布导致错误的代码吗? + 在你的
__salaryTypeFromWeekdaymethod 中,WORK_ATTENDANCE 是什么?它应该是一个变量或一个字符串,否则它会抛出一个ReferenceError。 -
__updateSalaryType被标记为静态,没有可用的this。 -
WORK_ATTENDANCE 是类外的全局常量,但在同一个 js 文件中。没有问题。问题在于调用 __salaryTypeFromWeekday 方法。
标签: javascript function class ecmascript-6 es6-class