昔コーディングテストをつくったときにあった問題。
参考:http://bashalog.c-brains.jp/14/04/03-100000.php
function Singleton () {
var instance = this; // 外からはアクセスできない
if(typeof Singleton.instance === 'object') {
return Singleton.instance;
}
this.myName = 'Singleton';
// 一度呼ばれたらコンストラクタそのものを上書き
Singleton = function() {
return instance;
};
return this;
}
var obj1 = new Singleton(); // new を使ってSingletonオブジェクトを作成する
Singleton.instance = "hoge" // 新しいオブジェクトで上書きできない
var obj2 = new Singleton(); // new を使ってSingletonオブジェクトを作成する
console.log(obj1 === obj2); // true 2つは同じオブジェクト