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中完成上述操作(尽管以更复杂的形式)。当我运行这个代码时,它运行良好,但我感到奇怪的是,在类中的某个函数返回该类的实例化版本。有没有什么理由不以这种方式构建我的代码?有了ES6类,可以从静态方法返回该类的实例吗?
甲起作用的替代静态方法是:
Thing.specialThing =() => {
return new Thing('Special Thing');
};
什么是一些长处和短处(如果有的话),使用的这些东西任一个?有没有其他更好的方法可以实现我不知道的目标?
有什么都没有错。 – Pointy
这个结构在其他语言中是非常常见的,你可能还没有在js中看到它的唯一原因是因为类是JavaScript的新手。 –
很酷的感谢回复@Pointy&@Pamblam! 另外一般问题 - 为什么评论答案而不是回答? – thisissami