js單例模式的兩種方案
方案一:利用閉包的兩個(gè)作用,可以變通地讀到內(nèi)部的變量,二是可以讓這些變量始終在內(nèi)存中。
//方案一
var SingletonTester = (function () {
//單例方法
function Singleton(args) {
var args = args || {};
this.name = 'SingletonTester'; //方法對(duì)外的屬性,另外一種方式就是返回對(duì)象
this.pointX = args.pointX || 6;
this.pointY = args.pointY || 10;
}
//單例實(shí)例
var instance;
//返回對(duì)象
return {
name: 'SingletonTester',
getInstance: function (args) {
if (instance === undefined) {
instance = new Singleton(args);
}
return instance;
}
};
})(); //直接執(zhí)行該方法
//測(cè)試
var test = SingletonTester.getInstance({ pointX: 5 });
console.log(test.pointX);
方案二:
//方案二
function Universe() {
// 判斷是否存在實(shí)例
if (typeof Universe.instance === 'object') {
return Universe.instance;
}
// 其它內(nèi)容
this.start_time = 0;
this.bang = "Big";
// 緩存
Universe.instance = this;
// 隱式返回this
}
// 測(cè)試
var uni = new Universe();
var uni2 = new Universe();
console.log(uni === uni2); // true
- JS實(shí)現(xiàn)單例模式的6種方案匯總
- javascript 單例模式演示代碼 javascript面向?qū)ο缶幊?/a>
- JavaScript的單例模式 (singleton in Javascript)
- 輕松掌握J(rèn)avaScript單例模式
- [js高手之路]單例模式實(shí)現(xiàn)模態(tài)框的示例
- JavaScript設(shè)計(jì)模式之策略模式詳解
- javascript設(shè)計(jì)模式--策略模式之輸入驗(yàn)證
- JavaScript設(shè)計(jì)模式之策略模式實(shí)例
- 學(xué)習(xí)JavaScript設(shè)計(jì)模式之策略模式
- 學(xué)習(xí)JavaScript設(shè)計(jì)模式(策略模式)
- javascript單例模式與策略模式實(shí)例詳解
相關(guān)文章
javascript中錯(cuò)誤使用var造成undefined
這篇文章主要介紹了javascript中錯(cuò)誤使用var造成undefined的原因,實(shí)例分析了錯(cuò)誤使用var造成undefined的過(guò)程,感興趣的小伙伴們可以參考一下2016-03-03ant-design-pro?的EditableProTable表格驗(yàn)證調(diào)用的實(shí)現(xiàn)代碼
這篇文章主要介紹了ant-design-pro?的EditableProTable表格驗(yàn)證調(diào)用,這里的需求是點(diǎn)擊外部的保存要對(duì)整個(gè)表單進(jìn)行驗(yàn)證,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06javascript實(shí)現(xiàn)的簡(jiǎn)單計(jì)時(shí)器
計(jì)時(shí)器提供了一 個(gè)可以將代碼片段異步延時(shí)執(zhí)行的能力,javascript生來(lái)是單線程的(在一定時(shí)間范圍內(nèi)僅一部分js代碼能運(yùn)行),計(jì)時(shí)器為我們提供了一種避開這種 限制的方法,從而開辟了另一條執(zhí)行代碼的蹊徑。2015-07-07使用Promise封裝小程序wx.request的實(shí)現(xiàn)方法
這篇文章主要介紹了使用Promise封裝小程序wx.request的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11javascript中數(shù)組與對(duì)象的使用方法區(qū)別
數(shù)組(array)是按次序排列的一組值。JS其實(shí)沒有真正的數(shù)組,只是用對(duì)象模擬數(shù)組。本質(zhì)上,數(shù)組屬于一種特殊的對(duì)象。typeof運(yùn)算符會(huì)返回?cái)?shù)組的類型是object。在javascript中,數(shù)組又可以認(rèn)為是索引數(shù)組,即可以用整數(shù)來(lái)進(jìn)行索引。數(shù)組和對(duì)象在這種情況下非常接近。2022-12-12Bootstrap樹形菜單插件TreeView.js使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Bootstrap樹形菜單插件TreeView.js使用方法,一款非??岬幕赽ootstrap的jQuery多級(jí)列表樹插件,具有一定的實(shí)用性,感興趣的小伙伴們可以參考一下2016-11-11JS中style.display和style.visibility的區(qū)別實(shí)例說(shuō)明
下面的例子說(shuō)明了這種區(qū)別:在這個(gè)例子中,divContent1和divContent2隱藏的時(shí)候用的是style.display=none,這時(shí)候,后面的div會(huì)向上移動(dòng),占據(jù)已經(jīng)隱藏的div的空間。divContent3和divContent4用的是style.visibility=hidden來(lái)隱藏,但是其隱藏后仍然占據(jù)原來(lái)的空間2013-03-03JS實(shí)現(xiàn)淘寶支付寶網(wǎng)站的控制臺(tái)菜單效果
這篇文章主要介紹了JS實(shí)現(xiàn)淘寶支付寶網(wǎng)站的控制臺(tái)菜單效果,涉及JavaScript基于時(shí)間函數(shù)及數(shù)學(xué)運(yùn)算控制頁(yè)面動(dòng)畫彈出菜單效果的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09javascript oop開發(fā)滑動(dòng)(slide)菜單控件
這里因?yàn)槭茄菔舅宰孒TML CSS盡量的簡(jiǎn)化,另外使用jquery的 fn.slideUp fn.slideDown 實(shí)現(xiàn)起來(lái)會(huì)更容易不過(guò)我作為一個(gè)專業(yè)的開發(fā)者多了解些原生的JS對(duì)技術(shù)的提高還是很有幫助。2010-08-08