一个简单确非常实用的javascript函数
在写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;
}
- 简单数组
"{0}|{1}|{2}".format([2,3,4]); // 2|3|4
"{0}|{1}|{2}".format(["a","b","c"]); // a|b|c
- 简单多参数
"{0}|{1}|{2}".format(2,3,4); // 2|3|4
"{0}|{1}|{2}".format("a","b","c"); // a|b|c
- 数组多参数
"{0}|{1}|{2}".format([1,2,3],[4,5,6]); // 1|2|34|5|6
- 对象多参数
"<li value='{v}'>{n}</li>".format({v:1,n:'n1'},{v:2,n:'n2'}); // <li value="1">n1</li><li value="2">n2</li>
- 简单对象
"{a}|{b}|{c}".format({a:1,b:"ef",c:23}); //1|ef|23
- 数组数组
"{0}|{1}|{2}".format([[1,2,3],[4,5,6]]); // 1|2|34|5|6
- 对象数组
"<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函数的更多相关文章
- 一个简单的路由,用javascript实现
前端路由在很多开源的js类库框架中都得到支持,如angularJS,Backbone,Reactjs等等.前端路由和后端路由原理一样,是让所有的交互和展现在一个页面运行以达到减少服务器请求,提高客户体 ...
- 一个简单的、面向对象的javascript基础框架
如果以后公司再能让我独立做一套新的完整系统,那么我肯定会为这个系统再写一个前端框架,那么我到底该如何写这个框架呢? 在我以前的博客里我给大家展示了一个我自己写的框架,由于当时时间很紧张,做之前几乎没有 ...
- 在JavaScript函数中使用EL表达式注意的事项
最近在使用JSP显示从Servlet带过来的数据时,大量的使用到了EL表达式,并且有些EL表达式是在使用到JavaScript的函数时作为参数传入的,举个例子,比如下面的样子: 这个HTML标签的意思 ...
- 现代JavaScript函数库 usuallyjs 的安装和使用
usuallyjs usuallyjs 是一个面向现代 Web 开发的 JavaScript 实用函数库. usuallyjs 基于 ES6 开发,抛弃了传统 Web 开发中 DOM 和 BOM 操作 ...
- 一个简单例子弄懂什么是javascript函数劫持
javascript函数劫持很简单,一般情况下,只要在目标函数触发之前,重写这个函数即可. 比如,劫持eval函数的代码如下: var _eval=eval; eval=function(x){ if ...
- 【译】采用MVC模式创建一个简单的javascript App
原文标题:Build A Simple Javascript App The MVC Way 作者:joshcrawmer4 翻译人:huansky 初次翻译,翻译的不好,还请见谅 JavaScrip ...
- javascript编写一个简单的编译器(理解抽象语法树AST)
javascript编写一个简单的编译器(理解抽象语法树AST) 编译器 是一种接收一段代码,然后把它转成一些其他一种机制.我们现在来做一个在一张纸上画出一条线,那么我们画出一条线需要定义的条件如下: ...
- 一个简单的javascript节流器实现
节流器 javascript的节流器主要用于延缓某些动作的执行,比如ajax请求,如果input框注册了input事件,那么当用户输入时就会持续的触发这个事件,如果回调函数中持续的通过ajax调用后台 ...
- 一个事件激活多个JavaScript函数
http://www.cnblogs.com/meil/archive/2006/09/20/509359.html如果你的网页中一个“OnLoad”事件要激活两个以上的JavaScript函数,那怎 ...
随机推荐
- Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理
摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■ 详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...
- Maven 实战
http://www.cnblogs.com/chowmin/category/599392.html
- Leetcode: Optimal Account Balancing
A group of friends went on holiday and sometimes lent each other money. For example, Alice paid for ...
- Android 广播 BroadcastReceiver
Android 系统里定义了各种各样的广播,如电池的使用状态,电话的接收和短信的接收,开机启动都会产生一个广播.当然用户也可以自定义自己的广播. 既然说到广播,那么必定有一个广播发送者,以及广播接收器 ...
- 什么情况下会用到try-catch
本文不区分语言,只为记录一次有收获的面试. 面试官:什么情况下用到try-catch?程序员:代码执行预料不到的情况,我会使用try-catch.面试官:什么是预料不到的情况呢?程序员:比如我要计算a ...
- Mac下好用的编辑器VIM GUI版本 VimR 推荐
vim号称是编辑器之神,轮其功能和扩展性的确少有编辑器能比,但是大多数编辑器都有的文件浏览功能它确没有,虽然有些插件可以实现,但用起来都不是很方便,偶然发现了一个GUI版本的VIM,与普通的GUI版本 ...
- java运行环境和运行机制
先来介绍三个概念: JVM----JAVA virtual machine java虚拟机:对字节码提供相同的接口,对操作系统提供不同的接口,以适应各个OS JRE----JAVA runt ...
- 用 WEKA 进行数据挖掘,第 1 部分: 简介和回归(转)
http://www.ibm.com/developerworks/cn/opensource/os-weka1/index.html 简介 什么是 数据挖掘?您会不时地问自己这个问题,因为这个主题越 ...
- SSH框架使用中存在的诡异异常
背景 相信大多数人目前都在使用Spring + Struts2/SpringMVC + Hibernate来构建项目的整体架构,但是在使用中经藏会遇到一些诡异的问题,不知道如果解决,今天我遇到了一个非 ...
- Recover lost Confluence password
confluence重置admin密码 复方法: 1. 运行此sql 找到你的管理员帐户: select u.id, u.user_name, u.active from cwd_user u joi ...