位置: 编程技术 - 正文

javascript 单例模式演示代码 javascript面向对象编程(js编写一个标准的单例模式类)

编辑:rootadmin
js的单例写法 JS单例模式 你是?(单例) 你是?(普通) [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]loop.js是一个单例模式的js类://一开始就用new 无名类的方式创建。这样就实现了单例的功能。var loop = new (function(){ // 外部公共函数 // 无限循环的操作 this.setloop = function(fn){Infinite_loop.setLoopFn(fn);} // 参数 1 参数类型 function this.deleteloop = function(fn){Infinite_loop.deleteLoopFn(fn);} // 参数 1 参数类型 function this.stoploop = function(){Infinite_loop.stopLoop();} // 单次循环的操作 this.setloopOne = function(fn){one_loop.setLoopOneFn(fn);} // 参数 1 参数类型 function this.stoploopOne = function(){one_loop.stopLoopOne();} // 下面是两个私有的单例模式成员 // 无限循环执行的List对象 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<this.loop_action.length;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<this.loop_action.length;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,); 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(); } })(); /* 单次执行的list对象 */ 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,); 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(); } })();})();下面是实例:loop.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " xmlns=" http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>loop.js</title><script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="loop.js"></script><script type="text/javascript">function moveLayer1(){ this.moveleft = true; this.movedown = true; this.x1 = this.y1 = ; this.x2 = ; this.y2 = ;}moveLayer1.prototype.move = function(){ var divLayer1 = document.getElementById("Layer1"); var l = parseInt(divLayer1.style.left), t = parseInt(divLayer1.style.top); var r = parseInt(Math.random()*); if(l < this.x2 && this.moveleft){ l+=1+r; if(l>this.x2-1)this.moveleft = false; }else if(l > this.x1 && ! this.moveleft){ l-=1+r; if(l < this.x1+1)this.moveleft = true; } if(t < this.y2 && this.movedown){ t+=1+r; if(t>this.y2-1)this.movedown = false; }else if(t > this.y1 && ! this.movedown){ t-=1+r; if(t < this.y1+1)this.movedown = true; } divLayer1.style.left =l+"px"; divLayer1.style.top = t+"px";}function circle(){ this.r = ; this.rx = ; this.ry = ; this.x; this.y; this.angle = 0; this.speedAngle = ;}circle.prototype.init = function(){ this.setXY(); $("body").append('<div id="cd" class="Layer2" style="left:'+this.x+'px;top:'+this.y+'px;"><img src="testFile/glass_x.gif" /></div>'); $("body").append('<div class="Layer1" style="left:'+this.rx+'px;top:'+this.ry+'px;"></div>');}circle.prototype.setXY = function(){ this.x = this.rx + this.r*Math.cos(this.angle/(/Math.PI)); this.y = this.ry + this.r*Math.sin(this.angle/(/Math.PI));}circle.prototype.draw = function(){ this.angle +=this.speedAngle; this.setXY(); var f = document.getElementById("cd"); //$("body").append($("#cd").clone()); f.style.left =this.x+"px"; f.style.top = this.y+"px";}function timetable(){var f = document.getElementById("daa");var d = new Date();f.innerHTML = "现在时间:"+d.getUTCFullYear()+"年"+d.getUTCMonth()+"月"+d.getUTCDate()+"日 星期"+d.getUTCDay()+" "+d.getUTCHours()+":"+d.getUTCMinutes()+":"+d.getUTCSeconds();}var lenstr = -1;function prints(){ var str = document.getElementById("sourse").innerHTML; if(lenstr<str.length){ lenstr++; var f = document.getElementById("prin"); //if(lenstr%==0)f.innerHTML +="<br />"; f.innerHTML += str.charAt(lenstr); }else{ loop.deleteloop(prints); }}var movediv = new moveLayer1();function imgMove(){movediv.move();}var mycircle = new circle();function drawCircle(){mycircle.draw();}function winInit(){mycircle.init();loop.setloop(drawCircle);loop.setloop(imgMove);loop.setloop(timetable);loop.setloop(prints);}</script><style type="text/css"><!--.Layer1 { position:absolute; overflow:hidden; color:#fff; width:px; height:px; z-index:;}.Layer2 { position:absolute; overflow:hidden; color:#fff; width:px; height:px; z-index:1;}--></style></head><body onload="winInit();"><div id="daa"></div><div id="Layer1" class="Layer1" style="left:px; top:px;"><img src="testFile/glass_x.gif" name="mimg" width="" height="" id="mimg" /></div><pre id="prin"></pre><div id="sourse" style="display:none"> var x = 1; var y = 2; var z = 3; var sum; function Plus(a, b) { var z = 0; var i = 0; for (i = 0; i < arguments.length; i++) { z += arguments[i]; } setTimeout( function() {alert(z);}, ); //可以带变量参数的setTimeout调用形式 return z; } setTimeout( function(){ sum = Plus(x, y, z); }, ); /*除了可以带变量参数还可以获取返回值的setTimeout调用形式*/</div></body></html>jquery.jsjQuery 是1.2.6版的,小巧的js框架,可以到 money = factory.creater ("美元");

推荐整理分享javascript 单例模式演示代码 javascript面向对象编程(js编写一个标准的单例模式类),希望有所帮助,仅作参考,欢迎阅读内容。

javascript 单例模式演示代码 javascript面向对象编程(js编写一个标准的单例模式类)

文章相关热门搜索词:单例模式前端,js class 单例,js中单例模式,js中单例模式,js编写一个标准的单例模式类,js编写一个标准的单例模式类,js单例模式应用场景,js单例模式,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript 设计模式之组合模式解析 怎么说呢?!就像是动物(组合对象)一样,当它生下后代(叶对象)时,它的后代就有了某种功能(比如:挖洞,听力好等等);也像是一棵树,它

javascript 对象入门实例教程 1:构造函数法[Ctrl+A全选注:如需引入外部Js需刷新才能执行]注解:1:这里定义了一个Dog对象(在javascript中,函数就是对象,这里functionDog(name,weight)同时

JavaScript之信息的封装 js对象入门 JavaScript之信息的封装在编码前,我们需要了解如下几个术语;封装:对内部数据的表现形式和实施细节进行隐藏;私有属性和方法:外界只能通过其公

标签: js编写一个标准的单例模式类

本文链接地址:https://www.jiuchutong.com/biancheng/386536.html 转载请保留说明!

上一篇:Javascript 类与静态类的实现(续)(js类的静态属性)

下一篇:JavaScript 设计模式之组合模式解析(js设计模式有什么用)

  • 印花税和契税是什么意思?什么时候交?
  • 投资收益纳税调整明细表怎么填
  • 个人所得税纳税义务人
  • 计提个人所得税计入什么科目
  • 外国常驻代表机构办理税务登记
  • 结转已销商品的成本的会计科目有哪些
  • 小规模增值税税率表2023年最新版
  • 出口关税的计算基数
  • 广告公司个体户自己可以开发票
  • 应付中转是什么科目
  • 企业国有资产无偿划转办法
  • 工程分包开具发票怎么开
  • 事业单位代扣社保公积金分录怎么写的
  • 资本公积是啥
  • 未分配利润调整会计分录
  • 发票未能在汇算清缴前取得怎么办?
  • 专用发票作废后怎么处理
  • 赞助贫困学生的语句
  • 无法支付的其他应付款可以用现金核销吗
  • 慈善基金会的含义
  • 融资融券主要是哪些对象
  • 工伤补偿是否缴纳医保
  • 增值税申报交税后怎样补录未抵扣进项税
  • 农业大棚卷帘机用什么油
  • 受托代理资产核算
  • 安装固定资产的费用
  • gdb调试工具的使用
  • 电梯的维护保养应当由谁负责
  • Salzburg with Salzach river, Austria (© MacEaton/Alamy)
  • 售后回租融资租赁案例
  • 100行php代码实现加密端口转发
  • html+php
  • ajax获取php数据
  • 举报民间借贷利息收入所得税
  • 商业汇票的承兑银行必须具备下列条件
  • php usort函数
  • 会员卡怎样批量生成
  • 有效税额可以更改吗
  • 软件和硬件如何分开
  • 暂估应付款怎么录入
  • 企业所得税汇算清缴扣除标准2023
  • 椅子能放进后备箱吗
  • 营业外支出增加记借方还是贷方
  • 增加固定资产原值50%以上
  • 制造费用属于费用性支出吗
  • 新公司申请一般纳税人流程
  • 需要什么证件和材料
  • 补缴以前年度的印花税会计分录
  • 找社保代理公司需要提供什么资料
  • 其他应收款科目代码
  • 外经证适用范围
  • 土地回收补偿费怎么算
  • 汽车销售公司办理贷款重点调查哪些
  • 非营利组织注册资金可以用吗
  • 公司物资借用手续
  • 差旅费借记什么科目
  • 房屋租赁的注意问题
  • 公司员工住宿费标准
  • 税控盘和金税盘可以安装在一个电脑
  • 公司固定资产如何核算
  • 建账前应该考虑哪些问题
  • sqlserver数据库恢复
  • 电脑出现蓝屏后黑屏怎么办
  • elccest.exe是间谍广告程序吗 elccest进程有什么作用
  • win8.1文件夹选项
  • cortanawin10在哪
  • linux openfoam
  • CSS expression控制图片自动缩放效果代码[兼容 IE,Firefox]
  • js多选
  • 判断一个点在三角形内部
  • .material design
  • js过滤filter
  • shell脚本计算字符串长度
  • js中变量有哪几种?分别在哪里定义?
  • bootstrapped 5%
  • 动态生成script
  • python编写登录程序
  • 彩票中奖归出钱人还是中奖人
  • 劳务包含哪些
  • 登录上海电子税务局找不到税务数字帐户
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设