【发布时间】:2017-03-17 17:28:07
【问题描述】:
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');
};
使用其中任何一种都有哪些优点和缺点(如果有的话)?还有其他更好的方法来实现我不知道的这个目标吗?
【问题讨论】:
-
这完全没有问题。
-
这种结构在其他语言中非常常见,你可能在 js 中没有看到它的唯一原因是因为类是 javascript 的新手..
-
非常感谢@Pointy 和@Pamblam 的回复!也是一般性问题 - 为什么用答案而不是回答来评论?
-
好吧,我不能代表任何人发言,但如果这只是意见问题,而且我不认为自己是专家,我会发表评论。换句话说,我无法对为什么这是一种好的做法提供全面的解释和辩护。
-
好吧,这是有道理的。谢谢你启发我!
标签: javascript class static ecmascript-6 es6-class