如何从 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
.
我知道之前有这方面的问题,但我已经尝试了答案但仍然失败并出现错误:
__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
.