我有三个类:用户,帐户和模型。用户和帐户正在扩展Model类。
User.js:
import Model from '@/classes/Model'
export default class User extends Model {
constructor(data) {
super(data)
}
}
Account.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)
}
}
我想通过在Model中这样创建的静态方法创建Account和User实例:Account.create()
但是,编译时出现此错误:由于循环依赖问题,“超级表达式必须为null或函数”。 我不知道如何解决这个问题,而不必将类作为参数传递给这样的Model.create方法,我觉得这很丑
Account.create(data, Account)
答案 0 :(得分:0)
我认为解决此问题的最佳方法是将classesMapping
移至外部文件。
所以你得到
User
和Account
并由Model.js导入答案 1 :(得分:0)
我想通过在Model中创建的静态方法创建
Account
和User
实例,例如:Account.create()
好吧,您不需要任何_classesMapping
。您可以通过this
来访问构造函数,而无需通过其名称进行查找。
// Model.js:
export default class Model {
constructor(data) {
…
}
static create(models) {
return new this(models)
}
}
那只需删除依赖即可解决循环依赖问题:-)