我有以下类结构。
员工服务.js
const {EmployeeRequestExecutor} = require('./EmployeeRequestExecutor');
class EmployeeService {
fulfill(request){
EmployeeRequestExecutor.delegateEmployeeRequest(request);
}
}
module.exports = {EmployeeService};
员工请求执行器.js
const {HelpfulEmployee} = require('./HelpfulEmployee');
class EmployeeRequestExecutor {
static delegateEmployeeRequest(request){
let employee = new HelpfulEmployee();
employee.work(request);
}
static executeEmployeeRequest(request){
console.log('Executed', request);
}
}
module.exports = {EmployeeRequestExecutor};
HelpfulEmployee.js
const {EmployeeRequestExecutor} = require('./EmployeeRequestExecutor');
class HelpfulEmployee {
work(request){
EmployeeRequestExecutor.executeEmployeeRequest(request);
}
}
module.exports = {HelpfulEmployee};
如果我们这样做
let employeeService = new EmployeeService();
employeeService.fulfill(request);
我们得到 类型错误:无法读取 HelpfulEmployee.js 中未定义的属性“executeEmployeeRequest”:5:33
为什么HelpfulEmployee.js
中这样的调用结构EmployeeRequestExecutor
是未定义的?
最佳答案
HelpfulEmployee 和 EmployeeRequestExecutor 之间存在循环依赖(它们都需要彼此)。 循环依赖大多数时候是由类设计问题引起的。要修复它们,您应该重新考虑对象之间的信息流。
这是一个选项,但还有更多选项:
const {HelpfulEmployee} = require('./HelpfulEmployee');
class EmployeeRequestExecutor {
static delegateEmployeeRequest(request){
let employee = new HelpfulEmployee();
let requestExecutor = new EmployeeRequestExecutor();
employee.work(request, requestExecutor);
}
executeEmployeeRequest(request){
console.log('Executed', request);
}
}
module.exports = {EmployeeRequestExecutor};
class HelpfulEmployee {
work(request, requestExecutor){
requestExecutor.executeEmployeeRequest(request);
}
}
module.exports = {HelpfulEmployee};
关于javascript - 要求解决未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59426047/