我正在谷歌地图API前面创建一个助手类 - 只是为了学习。
我想在我的班级中只保留一个google.maps.Map对象的实例,即使有人决定实例化该类的另一个实例。
我来自.NET背景,概念很简单 - 但是我仍然适应javascript(和ES6),所以任何指针都非常受欢迎。
这是一段解释(通过评论)我想要的东西。
class Foo {
constructor(bar) {
// If someone else decides to create a new instance
// of 'Foo', then 'this.bar' should not set itself again.
// I realize an instanced constructor is not correct.
// In C#, I'd solve this by creating a static class, making
// 'bar' a static property on the class.
this.bar = bar;
}
}
答案 0 :(得分:5)
我认为这就是你想要的:
var instance = null;
class Foo {
constructor(bar) {
if (instance) {
throw new Error('Foo already has an instance!!!');
}
instance = this;
this.bar = bar;
}
}
或
class Foo {
constructor(bar) {
if (Foo._instance) {
throw new Error('Foo already has an instance!!!');
}
Foo._instance = this;
this.bar = bar;
}
}