我有一些關於在javascript中創建單例的方法 - 如果我們想使用私有變量,則使用簡單的對象字面值方法和另一種使用閉包方法。JavaScript實用函數將一個類 - 「構造函數」轉換爲Singleton
我期待建立一個實用的功能,例如
Singleton(classname);
不管類 - 「構造函數」我通過在這裏作爲參數辛格爾頓方法這個類轉換成一個Singleton對象,PLUS在調用new Classname()
之後,如果有人再次激發新類名()他/她得到一些new Error ("Already instantiated once, this is Singleton");
用例如下 -
function Circle() {this.name = "Circle";}
SingleTon(Circle);
var circle1 = new Circle(); // returns the circle instance
var circle2 = new Circle(); // throws Error "Already instantiated once, this is Singleton"
我只是試圖在這裏定義「Singleton」方法。
我所看到的,在使用得到像實例的getInstance方法類似的例子 - Singleton.getInstance(圓)等等,但我找上面的特定問題,其中另一個程序員習慣在創建一個實例「新」方式嘗試在代碼中第二次激發new Circle();
並收到錯誤。
以這種方式創建一個單例是一個問題,但主要問題是拋出「錯誤」,以便我瞭解Circle構造函數需要在Singleton函數中的某處進行修改,但不確定如何完成此操作。
有沒有解決方法?
在此先感謝!
快如閃電,我能看到的第一個代碼段來秒鐘內我張貼了這個問題之後,然後你不斷增加的呼叫和把它大約2分鐘的的jsfiddle。精確度如此之快,令人難以置信。它涵蓋了所有要求,如:我無法更改已寫好的圓函數,並且圓函數應該獨立於單例函數,Singleton函數會修改圓函數。該解決方案可以輕鬆應用於任何預先編寫的代碼。我在等待其他人回答這個問題,但真的沒有希望得到更好的答案。 –
真正的天才答案在幾秒鐘內:)非常感謝 –
@AnmolSaraf沒問題^ _ ^高興地幫忙! – Neal