我有Singleton
这样的实施
var Singleton = (function () {
var instance;
function Singleton() {
if (!instance) {
instance = this;
}
else {
return instance;
}
}
return Singleton;
}());
如果您使用new
关键字创建新对象,则可以正常工作,例如
console.log(new Singleton() === new Singleton());
但如果有人忘记使用new
关键字,则无效
console.log(Singleton() === Singleton());
问题是如何强制函数被调用为构造函数,即使没有new
关键字,也可以使这些工作:
console.log(Singleton() === Singleton());
console.log(new Singleton() === new Singleton());
console.log(new Singleton() === Singleton());