我已经在JS中定义了纯对象,这些对象公开了某些静态方法,应该使用这些方法来构建它们,而不是使用构造函数。如何在Javascript中将我的类的构造函数设为私有的?
我如何在Javascript中将类的构造函数设为私有的?
var Score = (function () {
// The private constructor
var Score = function (score, hasPassed) {
this.score = score;
this.hasPassed = hasPassed;
};
// The preferred smart constructor
Score.mkNewScore = function (score) {
return new Score(score, score >= 33);
};
return Score;
})();
更新:解决方案仍应允许我测试x instanceof Score
。否则,@user2864740提供的仅公开静态构造函数的解决方案可行。
class
和#constructor
,则会出现SyntaxError: Class constructor may not be a private method
(v8)和SyntaxError: bad method definition
(SpiderMonkey)。因此,我认为私有构造函数不应该是 JS/ES 的一部分。如果您想创建一个单例,可以创建一个私有字段static #instance = null
,在构造函数中if (YourClass.#instance instanceof YourClass) return YourClass.#instance // or throw error perhaps
- undefined