Javascript 为什么要使用返回新this()的静态函数而不是构造函数?

Javascript 为什么要使用返回新this()的静态函数而不是构造函数?,javascript,Javascript,在阅读一些开源代码时,我偶然发现了下面这段(清理过的)代码片段 class Foo { constructor(bar) { this.bar = bar; } static create(bar) { return new this(bar); } } 我的问题是,为什么会有人使用返回新this()的静态函数而不是构造函数 newfoo(bar)和Foo.create(bar)之间有什么区别吗?这取决于用例。

在阅读一些开源代码时,我偶然发现了下面这段(清理过的)代码片段

class Foo  {

    constructor(bar) {
        this.bar = bar;
    }

    static create(bar) {
            return new this(bar);   
    }
}
我的问题是,为什么会有人使用返回新this()的静态函数而不是构造函数


newfoo(bar)
Foo.create(bar)
之间有什么区别吗?

这取决于用例。您可能希望以后有更复杂的工厂方法。除此之外,在几种情况下,特别是在处理反射时(例如,考虑Type Script),您可以定义一个接口来强制实现这种方法,从而给出该项的新实例。在这种情况下,调用类的静态方法比调用构造函数的
new
要容易得多(易于阅读和实现)。您可能希望以后有更复杂的工厂方法。除此之外,在几种情况下,特别是在处理反射时(例如,考虑Type Script),您可以定义一个接口来强制实现这种方法,从而给出该项的新实例。在这种情况下,调用类的静态方法比调用构造函数的
new
要容易得多(易于阅读和实现)。