在写js的时候,往往会碰到字符串拼接的问题,如果简单,直接使用+号连接字符串就可以了, 但是如果复杂,+用起来就非常不爽,在.net中有,Sting.Format函数,用起来还是很爽的,于是就想着js中是不是有类似的函数,答案是没有,但是js可以扩展原型,于是在网上找到很多版本的format, 功能都比较简单,也挺实用。 经过我一些思考,改造,扩展了format函数的功能, 个人感觉挺实用,代码也非常少,所以发出来共享下, 废话不多说,直接上码,代码很少,不解释。

String.prototype.format = function() {

    var args,
ret = '',
type = Object.prototype.toString.call(arguments[0]); if (type == "[object Object]") {
args = arguments;
} else if (type == "[object Array]") {
type = Object.prototype.toString.call(arguments[0][0]);
if (type == "[object Object]" || type == "[object Array]") {
args = arguments[0];
} else {
args = arguments;
}
} else {
args = [arguments];
} for (var i in args) {
var a = args[i];
ret += this.replace(/{([\w]+?)}/g, function(all, match) {
return a[match];
});
} return ret;
}
  1. 简单数组
    "{0}|{1}|{2}".format([2,3,4]);  // 2|3|4
"{0}|{1}|{2}".format(["a","b","c"]); // a|b|c
  1. 简单多参数
    "{0}|{1}|{2}".format(2,3,4);  // 2|3|4
"{0}|{1}|{2}".format("a","b","c"); // a|b|c
  1. 数组多参数
    "{0}|{1}|{2}".format([1,2,3],[4,5,6]);  // 1|2|34|5|6
  1. 对象多参数
    "<li value='{v}'>{n}</li>".format({v:1,n:'n1'},{v:2,n:'n2'});  // <li value="1">n1</li><li value="2">n2</li>
  1. 简单对象
    "{a}|{b}|{c}".format({a:1,b:"ef",c:23});  //1|ef|23
  1. 数组数组
    "{0}|{1}|{2}".format([[1,2,3],[4,5,6]]);  // 1|2|34|5|6
  1. 对象数组
    "<li value='{v}'>{n}</li>".format([{v:1,n:'n1'},{v:2,n:'n2'}]);  // <li value="1">n1</li><li value="2">n2</li>

一个简单确非常实用的javascript函数的更多相关文章

  1. 一个简单的路由,用javascript实现

    前端路由在很多开源的js类库框架中都得到支持,如angularJS,Backbone,Reactjs等等.前端路由和后端路由原理一样,是让所有的交互和展现在一个页面运行以达到减少服务器请求,提高客户体 ...

  2. 一个简单的、面向对象的javascript基础框架

    如果以后公司再能让我独立做一套新的完整系统,那么我肯定会为这个系统再写一个前端框架,那么我到底该如何写这个框架呢? 在我以前的博客里我给大家展示了一个我自己写的框架,由于当时时间很紧张,做之前几乎没有 ...

  3. 在JavaScript函数中使用EL表达式注意的事项

    最近在使用JSP显示从Servlet带过来的数据时,大量的使用到了EL表达式,并且有些EL表达式是在使用到JavaScript的函数时作为参数传入的,举个例子,比如下面的样子: 这个HTML标签的意思 ...

  4. 现代JavaScript函数库 usuallyjs 的安装和使用

    usuallyjs usuallyjs 是一个面向现代 Web 开发的 JavaScript 实用函数库. usuallyjs 基于 ES6 开发,抛弃了传统 Web 开发中 DOM 和 BOM 操作 ...

  5. 一个简单例子弄懂什么是javascript函数劫持

    javascript函数劫持很简单,一般情况下,只要在目标函数触发之前,重写这个函数即可. 比如,劫持eval函数的代码如下: var _eval=eval; eval=function(x){ if ...

  6. 【译】采用MVC模式创建一个简单的javascript App

    原文标题:Build A Simple Javascript App The MVC Way 作者:joshcrawmer4 翻译人:huansky 初次翻译,翻译的不好,还请见谅 JavaScrip ...

  7. javascript编写一个简单的编译器(理解抽象语法树AST)

    javascript编写一个简单的编译器(理解抽象语法树AST) 编译器 是一种接收一段代码,然后把它转成一些其他一种机制.我们现在来做一个在一张纸上画出一条线,那么我们画出一条线需要定义的条件如下: ...

  8. 一个简单的javascript节流器实现

    节流器 javascript的节流器主要用于延缓某些动作的执行,比如ajax请求,如果input框注册了input事件,那么当用户输入时就会持续的触发这个事件,如果回调函数中持续的通过ajax调用后台 ...

  9. 一个事件激活多个JavaScript函数

    http://www.cnblogs.com/meil/archive/2006/09/20/509359.html如果你的网页中一个“OnLoad”事件要激活两个以上的JavaScript函数,那怎 ...

随机推荐

  1. 用Canvas制作简单的画图工具

    今天用Canvas制作了一个画图工具,非常简单,功能也不是很多,主要有背景网格,画线,画圆,画矩形和画圆角矩形,也用到了canvas的一些基本知识,在这里一一列举. 1.线段的绘制: 如何绘制真正的1 ...

  2. XPath、XQuery 以及 XSLT 函数

    存取函数 名称 说明 fn:node-name(node) 返回参数节点的节点名称. fn:nilled(node) 返回是否拒绝参数节点的布尔值. fn:data(item.item,...) 接受 ...

  3. html radio check

    {% if classes|count > 1 %} <div class="class_checkbox" id="class_checkbox" ...

  4. 【C#进阶】override new virtual

    class Organ { public virtual void Intro() { Console.WriteLine("I'm a organ."); } public st ...

  5. php判断是否为微信浏览器访问

    今天遇到个问题,就是需要判断是否在微信浏览器内访问: if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {    ...

  6. PHP自带防SQL攻击函数区别

    为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes.(php.ini magic_quotes_gpc).如果m ...

  7. Linux操作系统备份之二:通过tar拷贝分区实现Linux操作数据的在线备份

    http://www.tektea.com/archives/2163.html. 在<Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份>文章中,我们介绍了使 ...

  8. py2exe使用方法

    一.简介 py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序. py2e ...

  9. 浅谈UI设计中妙用无穷的深色系背景

    英文:medium 译者:优设网 - 陈子木 链接:http://www.uisdc.com/ui-benefits-of-dark-background# --------------------- ...

  10. GPS经纬度换算成XY坐标

    ;        }