單例是一個全局變量,使用單例能夠更好的控制全局變量,還能夠利用分支技術來封裝瀏覽器之間的差別。網頁中使用全局變量因爲能夠被重寫風險很大。因此使用單例會更好的控制全局變量。瀏覽器
單例模式多數都是在加載腳本的時候被建立出來。不過對於一些使用方式單例適合在用到的時候被加載,因此須要一個能夠懶加載的單例。ui
是一種區分運行環境差別的技術,更加有效的針對加載的環境來定製代碼,達到更好的靈活性。this
var os = require("os"); Singleton = (function () { var uniqueInstance; // 單例實體 constructor = function () { // 單例初始化 return function Singleton () { var count = 10; function initCount(){ count = 10; } this.getCount = function () { return count; } this.setCount = function (value) { count = value; }; this.init=function(){ initCount(); } }; }(); return { getInstance: function () { if (!uniqueInstance) { // 判斷是否初始化過 uniqueInstance = new constructor(); } return (os.type()==='Windows_NT')?uniqueInstance:undefined;//單例分支使單例有更高的兼容性 } } })(); var S=Singleton .getInstance();//懶加載,在這裏開始加載和建立實例。 console.log(S.count); console.log(S.getCount()); S.setCount(550); console.log(S.getCount()); //S.initCount(); S.init(); console.log(S.getCount());
單例主要在於代碼的整潔性,是全局變量變得可控,使用懶加載能夠減小沒必要要的內存消耗。分支提升不用環境的兼容性,只需判斷一次環境而不用在每次使用都判斷環境。code