gpt4 book ai didi

javascript - ES6 循环依赖

转载 作者:可可西里 更新时间:2023-11-01 02:41:04 25 4
gpt4 key购买 nike

这是我经常遇到的问题,我希望找到正确的处理方法。

所以我有这样的设置:

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' })

太好了,现在我有了一些 child 。但我决定我希望在 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'
}
}
}

现在这是一个循环依赖。有没有一种优雅的方式来处理这个问题?

最佳答案

在父类中包含可感知子类的逻辑是一种严重的反模式。相反,在返回类型的子类中添加方法。例如,在 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 在这里做什么。我假设它是某种子类化机制。

一般来说,循环导入依赖项虽然在真正必要时有办法处理它们,但宇宙是否试图告诉您您构建代码的方式有问题。

关于javascript - ES6 循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34191330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com