用 Node.js 实现一个 Singleton
今天随便玩了一道 CodeWar 的题。
题意大致就是你需要实现一个 Singleton
也就是单件模式的类,让其下面代码执行成功:
var obj1 = new Singleton(); |
并且还有很重要的一点就是 Singleton
的对象的 instanceof
也得的确是 Singleton
才行。
开始试验
我们猜想 new Singleton()
的结果,如果 Singleton
函数也就是这个类的构造函数没返回值的话,直接会返回 this
,有返回值的话,那么就是等于其返回值了。
我们码下面的代码看一下:
var Singleton = function() { |
跑一遍之后我们的确发现了输出的值就是:
{ foo: "bar" } |
小作弊失败
于是我这么做:
var foo = {}; |
结果上面的几个条件都符合了,不信大家可以自己输出一遍看看。
但是——
这东西不是一个 Singleton
的实例,它只是一个简单的 JSON
对象,所以还是无法通过。
死月の正解
答案有很多,CodeWar 上面每个人的解法都不一样,但是归根结底本质还是大同小异的。
就是第一次的时候先直接返回 this
,并且把 this
放在某个地方。以后每次来这里创建的时候返回之前存好的 this
即可:
var Singleton = function() { |
别的写法
写法很多,我这里随意挑几个别人的答案吧。
/** |
/** |