JavaScriptでシングルトン
JavaScriptでのシングルトンの書き方をいくつか。思いついた範囲で。
1.クラス変数的な感じでインスタンスを保持。
example.ClassX.instance = new example.ClassX();
example.ClassX.instance.call();
2.関数のインスタンス変数に仕込む。
example.ClassX.getInstance = function() { var self = arguments.callee; return self.instance || ( self.instance = new example.ClassX() ); }; example.ClassX.getInstance().call();
3.ローカル変数でprivateに、とかいうテクニックがあったような。
example.ClassX.getInstance = function() { var instance = new example.ClassX(); return function() { return instance;}; }(); example.ClassX.getInstance().call();
4.クラス自体を差し替えてしまえ!
example.ClassX = new example.ClassX();
example.ClassX.call();
5.いっそのことこれでよくね?
example.ClassX.instance = { call: function(){ ... } } example.ClassX.instance.call();
個人的には、「DIコンテナに管理させる派」だったりするのでどれも使いませんが。