最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

javascript單例模式演示代碼javascript面向?qū)ο缶幊蘝js面向?qū)ο?/h1>
來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:48:30
文檔

javascript單例模式演示代碼javascript面向?qū)ο缶幊蘝js面向?qū)ο?/h4>
javascript單例模式演示代碼javascript面向?qū)ο缶幊蘝js面向?qū)ο?js的單例寫(xiě)法 JS單例模式 div{height:100px; width:100px; background:#CCC; border:#000 1px solid;} my = new function yangbin() { this.name = 我是單例funnyzak!; }; function yangbin1()
推薦度:

導(dǎo)讀javascript單例模式演示代碼javascript面向?qū)ο缶幊蘝js面向?qū)ο?js的單例寫(xiě)法 JS單例模式 div{height:100px; width:100px; background:#CCC; border:#000 1px solid;} my = new function yangbin() { this.name = 我是單例funnyzak!; }; function yangbin1()

js的單例寫(xiě)法

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
loop.js是一個(gè)單例模式的js類(lèi):

//一開(kāi)始就用new 無(wú)名類(lèi)的方式創(chuàng)建。這樣就實(shí)現(xiàn)了單例的功能。
var loop = new (function(){
// 外部公共函數(shù)
// 無(wú)限循環(huán)的操作
this.setloop = function(fn){Infinite_loop.setLoopFn(fn);} // 參數(shù) 1 參數(shù)類(lèi)型 function
this.deleteloop = function(fn){Infinite_loop.deleteLoopFn(fn);} // 參數(shù) 1 參數(shù)類(lèi)型 function
this.stoploop = function(){Infinite_loop.stopLoop();}
// 單次循環(huán)的操作
this.setloopOne = function(fn){one_loop.setLoopOneFn(fn);} // 參數(shù) 1 參數(shù)類(lèi)型 function
this.stoploopOne = function(){one_loop.stopLoopOne();}

// 下面是兩個(gè)私有的單例模式成員
// 無(wú)限循環(huán)執(zhí)行的List對(duì)象
var Infinite_loop = new (function(){
this.loop_stop = true;
this.loop_action = new Array();
this.loop_actionID = 0;
var opp = this;
this.setLoopFn = function(fn){
if(typeof(fn)!="function"){
throw new Error("window.loop.setloop's argment is not a function!"); return;
}
for(var i=0;i if(this.loop_action[i] == fn){
throw new Error(fn+" has been registered !");
return;
}
}
this.loop_action.push(fn);
this.startLoop();
};
this.deleteLoopFn = function(fn){
for(var i=0;i if(this.loop_action[i] == fn){
this.loop_action.splice(i,1);
}
}
};

this.Loop = function(){
var run = function(){
if(opp.loop_action.length > 0){
(opp.loop_action[opp.loop_actionID])();
opp.loop_actionID++;
if(opp.loop_actionID>=opp.loop_action.length)opp.loop_actionID=0;
setTimeout(opp.Loop,20);
return;
}
opp.loop_stop = true;
};
run();
}

this.stopLoop = function(){
this.loop_stop = true;
}
this.startLoop = function(){
if(! this.loop_stop)return;
this.loop_stop = false;
this.Loop();
}
})();

/* 單次執(zhí)行的list對(duì)象 */
var one_loop = new (function(){
this.loopOne_stop = true;
this.loopOne_action = new Array();
var opp = this;
this.setLoopOneFn = function(fn){
if(typeof(fn)!="function"){
throw new Error("window.loop.setloopOne's argment is not a function!"); return;
}
this.loopOne_action.push(fn);
this.startLoopOne();
}
this.LoopOne = function(){
function run(){
if(opp.loopOne_action.length>0 && !opp.loopOne_stop){
(opp.loopOne_action.shift())();
setTimeout(opp.LoopOne,20);
return;
}
opp.loopOne_stop = true;
}
run();
}
this.stopLoopOne = function(){
this.loopOne_stop = true;
}
this.startLoopOne = function(){
if(! this.loopOne_stop)return;
this.loopOne_stop = false;
this.LoopOne();
}
})();
})();


下面是實(shí)例:loop.html




loop.js

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

javascript單例模式演示代碼javascript面向?qū)ο缶幊蘝js面向?qū)ο?/h4>
javascript單例模式演示代碼javascript面向?qū)ο缶幊蘝js面向?qū)ο?js的單例寫(xiě)法 JS單例模式 div{height:100px; width:100px; background:#CCC; border:#000 1px solid;} my = new function yangbin() { this.name = 我是單例funnyzak!; }; function yangbin1()
推薦度:

標(biāo)簽: js javascript 面向
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專題
Top