当前位置: 首页 > news >正文

门户网站是以什么为主app制作费用一览表

门户网站是以什么为主,app制作费用一览表,网站内页修改关键字,网站开发实例百度云文章目录 1、实现单例模式2、透明的单例模式3、用代理实现单例模式4、JavaScript 中的单例模式5、惰性单例6、通用的惰性单例7、小结 定义#xff1a; 保证一个类仅有一个实例#xff0c;并提供一个访问它的全局访问点 单例模式是一种常用的模式#xff0c;有一些对象我们往… 文章目录 1、实现单例模式2、透明的单例模式3、用代理实现单例模式4、JavaScript 中的单例模式5、惰性单例6、通用的惰性单例7、小结 定义 保证一个类仅有一个实例并提供一个访问它的全局访问点 单例模式是一种常用的模式有一些对象我们往往只需要一个比如线程池、全局缓存、浏 览器中的 window 对象等 1、实现单例模式 是用一个变量来标志当前是否已经为某个类创建过对象如果是则在下一次获取该类的实例时直接返回之前创建的对象。 代码如下 var Singleton function (name) {this.name name;this.instance null; }; Singleton.getInstance function (name) {if (!this.instance) {this.instance new Singleton(name);}return this.instance; };var a Singleton.getInstance(a); var b Singleton.getInstance(b); console.log(a b); // true或者利用闭包 var Singleton function (name) {this.name name;this.instance null; }; Singleton.getInstance (function (name) {var instance null;return function (name) {if (!instance) {instance new Singleton(name);}return instance;}; })();var a Singleton.getInstance(a); var b Singleton.getInstance(b); console.log(a b); // true问题 就是增加了这个类的“不透明性”Singleton 类的使用者必须知道这是一个单例类 2、透明的单例模式 实现一个“透明”的单例类用户从这个类中创建对象的时候可以像使用其他任何普通类一样。 在下面的例子中我们将使用 CreateDiv 单例类它的作用是负责在页面中创建唯一的 div 节点代码如下 var CreateDiv (function () {var instance null;var CreateDiv function (html) {if (instance) {return instance;}this.html html;this.init();return (instance this);};CreateDiv.prototype.init function () {var div document.createElement(div);div.innerHTML this.html;document.body.appendChild(div);};return CreateDiv; })();var a new CreateDiv(a); var b new CreateDiv(b);console.log(a b);问题 问题假设我们某天需要利用这个类在页面中创建千千万万的 div即要让这个类从单例类变成一个普通的可产生多个实例的类那我们必须得改写 CreateDiv 构造函数把控制创建唯一对象的那一段去掉这种修改会给我们带来不必要的烦恼 解决 使用代理模式 3、用代理实现单例模式 在 CreateDiv 构造函数中把负责管理单例的代码移除出去使它成为一个普通的创建 div 的类 var CreateDiv function (html) {this.html html;this.init(); }; CreateDiv.prototype.init function () {var div document.createElement(div);div.innerHTML this.html;document.body.appendChild(div); };// 引入代理类 proxySingletonCreateDiv var ProxySingletonCreateDiv (function () {var instance;return function (html) {if (!instance) {instance new CreateDiv(html);}return instance;}; })();var a new ProxySingletonCreateDiv(a); var b new ProxySingletonCreateDiv(b);console.log(a b);跟之前不同的是现在我们把负责管理单例的逻辑移到了代理类 proxySingletonCreateDiv 中。这样一来CreateDiv 就变成了一个普通的类它跟 proxySingletonCreateDiv 组合起来可以达到单例模式的效果 4、JavaScript 中的单例模式 在 JavaScript 开发中我们经常会把全局变量当成单例来使用。 例如 var a {};问题 全局变量存在很多问题它很容易造成命名空间污染 解决 1、使用命名空间 var namespace1 { a: function(){ alert (1); }, b: function(){ alert (2); } };2、使用闭包封装私有变量 var user (function(){ var __name sven, __age 29; return { getUserInfo: function(){ return __name - __age; } } })();5、惰性单例 惰性单例指的是在需要的时候才创建对象实例 例子 var createLoginLayer (function () {var div;return function () {if (!div) {div document.createElement(div);div.innerHTML 我是浮窗;document.body.appendChild(div);}return div;} })()// 用户点击按钮的时候才开始创建该浮窗 document.getElementById(loginBtn).onclick function () {var loginLayer createLoginLayer(); };问题违反单一职责原则创建对象和管理单例的逻辑都放在 createLoginLayer对象内部如果我们下次需要创建页面中唯一的 iframe或者 script 标签用来跨域请求数据就 必须得如法炮制把 createLoginLayer 函数几乎照抄一遍 解决第6点 6、通用的惰性单例 将单例的逻辑从原来的代码中抽离出来这些逻辑被封装在 getSingle函数内部创建对象的方法 fn 被当成参数动态传入 getSingle 函数 var getSingle function (fn) {var result;return function () {return result || (result fn.apply(this, arguments));} }使用示例 var createLoginLayer function () {var div document.createElement(div);div.innerHTML 我是浮窗;document.body.appendChild(div);return div; } var createSingleLoginLayer getSingle(createLoginLayer);document.getElementById(loginBtn).onclick function () {var loginLayer createSingleLoginLayer(); };也可以用在只执行一次的函数 比如给一个div绑定事件 var bindEvent getSingle(function () {console.log(给div绑定事件~);return true; });bindEvent(); bindEvent(); bindEvent();7、小结 单例模式是一种简单但非常实用的模式特别是惰性单例技术在合适的时候才创建对象并且只创建唯一的一个。更奇妙的是创建对象和管理单例的职责被分布在两个不同的方法中这两个方法组合起来才具有单例模式的威力。
http://www.pierceye.com/news/240730/

相关文章:

  • 湛江网站排名提升免费网站空间有什么用
  • 装修公司网站 源码绍兴市交通建设检测中心网站
  • 企业建设网站流程图珠海网站建设 旭洁
  • 企业商城网站开发互联网行业公司
  • 中国建设人才服务信息网是正规网站wordpress文章分享
  • 渭南网站建设公司电话央美老师做的家具网站
  • 机械网站建设栏目内容怎么欣赏一个网站设计图
  • 帝国cms 网站搬家wordpress 购物 插件下载
  • 怎么做ppt教程网站手机能访问asp网站
  • 电子商务网站建设与管理教材评价织梦网站地图调用全站文章
  • 020网站开发多少钱汕尾建设网站首页
  • 桓台县建设局网站做弹幕网站有哪些
  • 淘宝客导购网站源码iis默认网站属性
  • 做网站用矢量图还是位图安徽省住房和建设厅网站
  • 彭阳网站建设多少钱嘉兴专业的嘉兴专业网站建设项目
  • 网站建设导航分哪几类公司网站大全
  • 网站建设 实训题安能建设总公司网站打不开
  • 莱西网站建设龙岗中心城有学网站建设
  • 重庆技术网站建设宝安做网站哪家好
  • 仿制网站建设写网站建设的软文
  • 0基础网站建设教程wordpress去掉rss订阅
  • 爱网站查询外贸推广具体是做什么
  • 商务网站价格找人做效果图那个网站
  • 上传到网站租一个服务器要多少钱
  • 网站制作服务合同安徽建设工程信息网文件
  • 成都企业网站建设公司正规的跨境电商平台有哪些
  • 中山工程建设信息网站网站监控系统
  • 个人网站想添加支付功能怎么做北京二次感染最新消息
  • 上海注册汽车租赁公司网站模板对seo的影响
  • 上海松江做网站公司wordpress 网站暂停