[英]How do I export an ES6 class and construct an instance of it in another module?
[英]Should/do I have to export returning class returned by another exported class in Javascript ES6?
考虑以下模块:
export class Bar {
generateFoo() {
return new Foo(1);
}
}
class Foo {
constructor(fooValue) {
this.fooValue = fooValue;
}
doFoo() { console.log(this.fooValue); }
}
在任何情况下我也应该导出Foo
吗? 为什么/为什么不?
在任何情况下我也应该导出 Foo 吗? 为什么/为什么不?
从模块中导出某些内容的唯一原因是,如果您希望外部代码能够调用它或直接引用它。 如果您希望您的客户能够创建Foo
对象的唯一方法是调用bar.generateFoo()
,那么没有理由导出Foo
。 在 Javascript 中,您可以完全引用已构建的 object 上的所有Foo
方法,而无需导出 class 本身。
另一方面,如果您希望模块的某些客户端能够使用new Foo(someValue)
直接实例化Foo
object ,那么您需要导出Foo
以使其成为可能。
导出 class 就是导出构造函数 function。 因此,如果您希望某人能够直接调用构造函数(例如,使用new Foo()
构造一个新的 object ),则需要执行该导出。 如果他们不需要直接调用构造函数,那么你不需要导出它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.