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

 更新时间:2017年10月17日 09:25:16   作者:res_min  
这篇文章主要介绍了javascript 中模板方法单例的实现方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

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'
   }
  ]);

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

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

相关文章

  • JS表单传值和URL编码转换

    JS表单传值和URL编码转换

    本篇文章给大家详细分享了JS表单传值和URL编码转换的相关知识点,并把实例做了分享,一起学习下。
    2018-03-03
  • 小程序tab实现页面切换

    小程序tab实现页面切换

    这篇文章主要为大家详细介绍了小程序tab实现页面切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • JavaScript获取css行间样式,内连样式和外链样式的简单方法

    JavaScript获取css行间样式,内连样式和外链样式的简单方法

    下面小编就为大家带来一篇JavaScript获取css行间样式,内连样式和外链样式的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • JavaScript 解析读取XML文档 实例代码

    JavaScript 解析读取XML文档 实例代码

    应项目之需求,需用JS操作XML文档,遂上网查资料,感觉这篇文章还不错,特转载到此地,与大家共享!
    2009-07-07
  • 一文详解如何清除手机上小程序缓存

    一文详解如何清除手机上小程序缓存

    大家在使用微信小程序的时候会有缓存,虽然小程序的缓存数值相比APP要少的多,下面这篇文章主要给大家介绍了关于如何清除手机上小程序缓存的相关资料,需要的朋友可以参考下
    2022-08-08
  • JavaScript判断是否为数字的几种方式汇总(推荐!)

    JavaScript判断是否为数字的几种方式汇总(推荐!)

    有时候需要根据输入的内容来进行计算,这个时候就需要判断输入的内容是否是数字,下面这篇文章主要给大家介绍了关于JavaScript判断是否为数字的几种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • JavaScript数据结构中栈的应用之表达式求值问题详解

    JavaScript数据结构中栈的应用之表达式求值问题详解

    这篇文章主要介绍了JavaScript数据结构中栈的应用之表达式求值问题,详细分析了中缀表达式、后缀表达式等概念、原理与转换方法,以及基于后缀表达式实现的表达式求值相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • 前端实现视频文件动画帧图片提取完整教程

    前端实现视频文件动画帧图片提取完整教程

    相信很多小伙伴在一些短视频平台上传视频的时候,系统会自动帮我们生成一些视频中的画面帧的图片,让我们作为视频封面的功能,那么这些短视频平台是如何从视频中抽取关键帧来作为封面,今天博主就带着大家一起来探讨这个问题,感兴趣的小伙伴跟着小编一起来看看吧
    2025-04-04
  • javascript 解决浏览器不支持的问题

    javascript 解决浏览器不支持的问题

    这篇文章主要介绍了javascript 解决浏览器不支持的问题的相关资料,需要的朋友可以参考下
    2016-09-09
  • ES6中非常实用的新特性介绍

    ES6中非常实用的新特性介绍

    ECMAScript 6离我们越来越近了,作为它最重要的方言,Javascript也即将迎来语法上的重大变革,InfoQ特开设“深入浅出ES6”专栏,来看一下ES6将给我们带来哪些新内容
    2016-03-03

最新评论