如何强制函数被调用为构造函数

时间:2014-10-28 18:41:30

标签: javascript

我有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());

0 个答案:

没有答案