【发布时间】:2020-12-10 19:20:15
【问题描述】:
我刚刚意识到您可以使用new 声明和构造一个类的新实例。这对于单例使用感觉非常优雅。这是有效的吗?如果是这样,有什么缺点吗?
var c = new class C {
constructor () {
this.foo = 'bar';
}
}
console.log(c.foo);
console.log(c.constructor.name);
console.log(c.constructor.prototype);
编辑
console.log(C); // Uncaught ReferenceError: C is not defined
【问题讨论】:
-
您不能实例化另一个
C类。控制台日志记录 c 给了我Uncaught ReferenceError: C is not defined。我还打算在模块export default new class C中使用它,但这不是重点。 -
嗯,但这里的问题不是您必须了解
c是否存在吗?单例模式的好处是您可以编写new Thing(),它会创建单例实例或将现有的单例实例交给您。 -
技术上我可以
console.log(new c.constructor());获得第二个实例。 -
@Nick 在我看来,单例应该是一个类的单个实例。 en.wikipedia.org/wiki/Singleton_pattern。因此,如果您不能重用
C,那么作为单例可能就足够了。 @Taplar 确实在这方面戳了一个洞,因为从技术上讲,人们可以使用构造函数来创建另一个实例。
标签: javascript class singleton instance declare