用 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() { |
别的写法
写法很多,我这里随意挑几个别人的答案吧。
/** |
/** |