我试图编写单例类,最初我编写了以下代码,对我来说感觉就像单例。我向其中一个人展示了这个,他立即拒绝了它,所以这让我一直在想为什么它不是单例类,还是他错了?
let MyFunc = (function(){
let instance;
return function(){
if(instance){
return instance;
}
instance = this;
}
}());
let o1 = new MyFunc();
let o2 = new MyFunc();
console.log(o1===o2) //returns true
我们无法猜测为什么那个人不同意。当然,无论您通过 调用它的次数如何,该代码都会返回单个对象new
,并且该对象将MyFunc.prototype
作为其原型。所以从这个意义上说,它是一个返回单例对象的函数。
JavaScript 中的单例构造模式没有太多用处(因为我们可以直接创建一次性对象),但这似乎是它的有效实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句