javascript 中模板方法单例的实现方法


Posted in Javascript onOctober 17, 2017

javascript 中模板方法单例的实现方法

模板方法单例

模板方法的定义:父类中定义一组操作算法骨架,将一些实现步骤延伸到子类中,使得子类可以不改变父类的算法结构的同时可重新定义算法中某些实现步骤。

代码块

html部分,例如:

<div id="content"></div>

js部分,例如:

//格式化字符串方法
  function fromateString(str, data) {
   return str.replace(/\{#(\w+)#\}/g, function(match, key){
    return typeof data[key] === undefined ? '' : data[key]
   });
  }
  //基础导航
  var Nav = function (data) {
   //基础导航样式模板
   this.item = '<a href="{#href#}" rel="external nofollow" title="{#title#}">{#name#}</a>';
   //创建字符串
   this.html='';
   for (var i = 0; i < data.length; i++) {
    this.html += fromateString(this.item, data[i]);
   }
   return this.html;
  }
  //带有信息提示信息导航
  var NumNav = function (data) {
   //消息提醒小心组件模板
   var tpl = '<p>{#num#}</p>';
   for (var i = data.length -1; i >= 0; i--) {
    data[i].name += data[i].name + fromateString(tpl, data[i]);
   }
   return Nav.call(this, data);
  }
  //带有链接地址的导航
  var LinkNav = function (data) {
   //消息提醒小心组件模板
   var tpl = '<span>{#link#}</span>';
   for (var i = data.length -1; i >= 0; i--) {
    data[i].name += data[i].name + fromateString(tpl, data[i]);
   }
   return Nav.call(this, data);
  }

  //测试带有信息提示的导航
  var nav = document.getElementById('content');
  nav.innerHTML = NumNav([
   {
    href : 'www.baidu.com',
    title : '百度一下你就知道',
    name : '百度',    
    num : 10,
    link : 'www.baidu.com'
   },
   {
    href : 'www.taobao.com',
    title : '淘宝商城',
    name : '淘宝',    
    num : 2,
    link : 'www.taobao.com'
   },
   {
    href : 'www.qq.com',
    title : '腾讯首页',
    name : '腾讯',    
    num : 3,
    link : 'www.qq.com'
   }
  ]);

其实模板方法模式不仅仅在我们归一化组件的时候使用 有时候创建页面时也是很常用到的。通过上述代码可以衍生出的静态页面的封装以及业务逻辑的交互封装。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
通过javascript获取iframe里的值示例代码
Jun 24 Javascript
js的正则test,match,exec详细解析
Jan 29 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
wap图片滚动特效无css3元素纯js脚本编写
Aug 22 Javascript
jQuery实现checkbox全选的方法
Jun 10 Javascript
jQuery获取同级元素的简单代码
Jul 09 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
Vue页面跳转动画效果的实现方法
Sep 23 Javascript
webpack 静态资源集中输出的方法示例
Nov 09 Javascript
Element中Slider滑块的具体使用
Jul 29 Javascript
vue中使用router全局守卫实现页面拦截的示例
Oct 23 Javascript
Js实现粘贴上传图片的原理及示例
Dec 09 Javascript
vue滚动轴插件better-scroll使用详解
Oct 17 #Javascript
react中的ajax封装实例详解
Oct 17 #Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
Oct 17 #Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 #Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
Oct 17 #Javascript
Vue中封装input组件的实例详解
Oct 17 #Javascript
js获取文件里面的所有文件名(实例)
Oct 17 #Javascript
You might like
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
javascript中的location用法简单介绍
2007/03/07 Javascript
JS 表单验证大全
2011/11/23 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
2018/08/24 jQuery
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
Python升级提示Tkinter模块找不到的解决方法
2014/08/22 Python
详解在Python中处理异常的教程
2015/05/24 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
浅谈numpy中np.array()与np.asarray的区别以及.tolist
2020/06/03 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
HTML5 Web 存储详解
2016/09/16 HTML / CSS
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
社区活动邀请函范文
2014/01/29 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
工程索赔意向书
2014/08/30 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
孙振耀退休感言
2015/08/01 职场文书
redis 解决库存并发问题实现数量控制
2022/04/08 Redis