当前位置:  开发笔记 > 编程语言 > 正文

ES6循环依赖

如何解决《ES6循环依赖》经验,为你挑选了1个好方法。

这是我经常遇到的一个问题,我希望找到正确的方法来处理它.

所以我有这样的设置:

parent.js:

export default {
  x: 1
}

a.js:

import parent from 'parent.js'
export default parent.extend(a, { title: 'a' })

b.js:

import parent from 'parent.js'
export default parent.extend(b, { title: 'b' })

很酷,现在我有了一些孩子.但我决定在parent.js中有一个函数来检查对象是否是ab的实例.

所以我可能这样做:

parent.js:

import a from 'a'
import b from 'b'

export default {
  x: 1,
  checkType (obj) {
    if (obj instanceof a) {
      return 'a'
    } else if (obj instanceof b) {
      return 'b'
    }
  }
}

那么现在这是一个循环依赖.有一种优雅的方式来处理这个问题吗?



1> 小智..:

在父类中具有知道子类的逻辑是一种严重的反模式.而是在返回类型的子类中添加方法.例如,在a.js:

import parent from 'parent.js';
export default parent.extend(a, { title: 'a', checkObj() { return 'a'; }});

如果期望的回报checkObj始终是title财产的价值,那么当然只是:

// parent.js
export default {
  x: 1,
  checkObj() { return this.title; }
}

我不知道到底extend在做什么.我假设它是某种子类化机制.

一般来说,循环导入依赖关系虽然有真正必要的方法来处理它们,但是宇宙试图告诉你构造代码的方式有问题.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有