我有三个类:用户,帐户和模型。用户和帐户正在扩展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)
我想创建
Account
并User
从静态方法实例在创建模型是这样的:Account.create()
好吧,您不需要任何_classesMapping
。您可以通过来简单地访问构造函数this
,而无需通过其名称进行查找。
// Model.js:
export default class Model {
constructor(data) {
…
}
static create(models) {
return new this(models)
}
}
只需删除依赖关系即可解决循环依赖问题:-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句