class Thing {
constructor(parameter) {
if (parameter) {
this.x = parameter;
}
return this;
}
getX () {
return this.x;
}
static specialThing() {
return new Thing('Special Thing');
}
}
let thingy = Thing.specialThing();
thingy.getX(); // 'Special Thing'
我想在 JavaScript 中执行上述操作(尽管形式更复杂)。当我运行这段代码时,它目前运行良好,但我对在类中的函数返回该类的实例化版本感到奇怪。有什么理由不以这种方式构建我的代码吗?
静态方法的有效替代方法是:
Thing.specialThing = () => {
return new Thing('Special Thing');
};
使用其中任何一种都有哪些优点和缺点(如果有的话)?还有其他更好的方法来实现我不知道的这个目标吗?