我有三个类:用户、帐户和模型。用户和帐户正在扩展模型类。用户.js:import Model from '@/classes/Model'export default class User extends Model { constructor(data) { super(data) }}帐户.js :import Model from '@/classes/Model'export default class Account extends Model { constructor(data) { super(data) }}和 Model.js :import Account from '@/classes/Account'import User from '@/classes/User'export default class Model { static _classesMapping = { Account, User } constructor(data) { ... } static create(models) { return new Model._classesMapping[this.name](models) }}我想从模型中的静态方法 create 创建 Account 和 User 实例,如下所示:Account.create()但是,由于循环依赖问题,我在编译时收到此错误:“超级表达式必须为空或函数”。我不知道如何解决这个问题,而不必像这样将类作为参数传递给 Model.create 方法,我觉得这很丑陋Account.create(data, Account)
2 回答

MM们
TA贡献1886条经验 获得超2个赞
我想从静态方法中创建Account和User实例在模型中创建,如下所示:Account.create()
好吧,你不需要任何东西_classesMapping。您可以通过 简单地访问构造函数this,而无需按其名称查找它。
// Model.js:
export default class Model {
constructor(data) {
…
}
static create(models) {
return new this(models)
}
}
这通过简单地删除依赖来解决您的循环依赖问题:-)

www说
TA贡献1775条经验 获得超8个赞
我认为解决此问题的最佳方法是将您classesMapping
的文件移动到外部文件。
所以你得到
模型.js
用户.js
账户.js
类映射.js
其中进口
User
和Account
与被Model.js进口
添加回答
举报
0/150
提交
取消