猿问

如何解决这个循环依赖问题?

我有三个类:用户、帐户和模型。用户和帐户正在扩展模型类。


用户.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)


梵蒂冈之花
浏览 238回答 2
2回答

MM们

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

www说

我认为解决此问题的最佳方法是将您classesMapping的文件移动到外部文件。所以你得到模型.js用户.js账户.js类映射.js其中进口User和Account与被Model.js进口
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答