是否可以从 JavaScript 中的子 class 导入父模块?
Is it possible to import parent module from sub class in JavaScript?
我有两个文件有自己的模块,Sub.js 和 Parent.js
Parent.js:
import Sub from "/.Sub.js"
export default class Parent {
static createSomething(){
new Sub();
}
}
Sub.js:
import Parent from "/.Parent.js"
export default class Sub extends Parent {
contructor(){}
}
我得到错误:
ReferenceError: 初始化前无法访问词法声明`X'
子模块不能使用,因为需要父模块,但是导入父模块需要导入子模块,我想?
这可以通过将它们放在同一个文件中来解决,但我想知道是否有办法将它们作为单独的文件保存。
实现此类循环依赖时,请确保您在其他代码中使用的文件不包含需要其他文件的 top-level export
声明。在你的情况下:
- 如果你在其他文件中导入
Sub
,它的top-level export
需要Parent
而需要Sub
,那么就无法解决:蛇咬自己的尾巴
- 如果您在其他文件中导入
Parent
,它的 top-level export
不需要立即 Sub
(仅当 createSomething
被调用时).在这种情况下,Parent
export
完全解析,然后 Sub
文件也能够解析它自己的 export
。
我有两个文件有自己的模块,Sub.js 和 Parent.js
Parent.js:
import Sub from "/.Sub.js"
export default class Parent {
static createSomething(){
new Sub();
}
}
Sub.js:
import Parent from "/.Parent.js"
export default class Sub extends Parent {
contructor(){}
}
我得到错误:
ReferenceError: 初始化前无法访问词法声明`X'
子模块不能使用,因为需要父模块,但是导入父模块需要导入子模块,我想?
这可以通过将它们放在同一个文件中来解决,但我想知道是否有办法将它们作为单独的文件保存。
实现此类循环依赖时,请确保您在其他代码中使用的文件不包含需要其他文件的 top-level export
声明。在你的情况下:
- 如果你在其他文件中导入
Sub
,它的top-levelexport
需要Parent
而需要Sub
,那么就无法解决:蛇咬自己的尾巴 - 如果您在其他文件中导入
Parent
,它的 top-levelexport
不需要立即Sub
(仅当createSomething
被调用时).在这种情况下,Parent
export
完全解析,然后Sub
文件也能够解析它自己的export
。