Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否必须导出Javascript ES6中另一个导出类返回的返回类?_Javascript_Class_Design Patterns_Export_Es6 Modules - Fatal编程技术网

我是否必须导出Javascript ES6中另一个导出类返回的返回类?

我是否必须导出Javascript ES6中另一个导出类返回的返回类?,javascript,class,design-patterns,export,es6-modules,Javascript,Class,Design Patterns,Export,Es6 Modules,考虑以下模块: export class Bar { generateFoo() { return new Foo(1); } } class Foo { constructor(fooValue) { this.fooValue = fooValue; } doFoo() { console.log(this.fooValue); } } 我应该在任何情况下也导出Foo?为什么 在任何情况下我也应该出口Foo

考虑以下模块:

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中,您可以完全引用已构造对象上的所有
Foo
方法,而无需导出类本身

另一方面,如果您希望模块的某个客户端能够使用
new Foo(someValue)
直接实例化
Foo
对象,则需要导出
Foo
,以实现这一点

导出类就是导出构造函数。因此,如果希望有人能够直接调用构造函数(例如,使用
newfoo()
构造一个新对象),则需要执行该导出。如果他们不需要直接调用构造函数,那么您就不需要导出它