【发布时间】:2019-10-09 00:26:09
【问题描述】:
我有两个不同的课程:
Class1.js
class Class1 {
initialize = () => {
console.log("Class1 Initializer");
}
}
export default Class1;
Class2.js
class Class2 {
initialize = () => {
console.log("Class2 Initializer");
}
}
export default Class2;
classes/index.js
import Class1 from "./Class1";
import Class2 from "./Class2";
export default {
Class1,
Class2
}
然后我正在尝试使用这些类:
server.js
import { Class1, Class2 } from "./classes";
...
Class1.initialize() <<<<==== ERROR - Cannot read property `initialize` of undefined.
导入和导出的正确语法是什么?为什么会出现这个错误?
【问题讨论】:
-
initialize = () => {是类字段语法-它将是实例的属性,而不是类本身的属性(如果您希望函数成为类本身的属性,请使用静态方法反而)。还有一个导致问题的循环依赖 -
您正在默认导出对象文字。不要那样做——它也不符合你的导入声明。声明两个命名导出。
-
@OriDrori 你为什么删除你的答案?这是正确的
标签: javascript ecmascript-6 es6-class