<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<script type="text/javascript">
/*
1."{v1}你好,我是{v2},我今年{v3}岁了"; {v1:Cupid,v2:Tina,v3:18};
2.'{0}你好,我是{1},我今年{2}岁了';['Cupid', 'Tina', 18];
3.'{0}你好,我是{1},我今年{2}岁了';'Cupid', 'Tina', 18;
*/
String.prototype.format = function (obj) {
var that = this;
if (typeof obj == "object") {
for (var attr in obj) {
that = that.replace("{" + attr + "}", obj[attr]);
}
} else {
//var a = arguments;
//alert(a instanceof Array)==》false
//把参数放到数组里面 slice() 方法可从已有的数组中返回选定的元素。
var arr = [].slice.call(arguments, 1);
//调用自己
return format(str, arr);
} return that;
}
function format(str, obj) {
if (typeof obj == "object") {
for (var attr in obj) {
str = str.replace("{" + attr + "}", obj[attr]);
}
} else {
//var a = arguments;
//alert(a instanceof Array)==》false
//把参数放到数组里面 slice() 方法可从已有的数组中返回选定的元素。
var arr = [].slice.call(arguments, 1);
//调用自己
format(str, arr);
} return str;
}
var str = '{v1}你好,我是{v2},我今年{v3}岁了'; var obj = { v1: 'Cupid', v2: 'Tina', v3: 18 };
console.log(format(str, obj));// Cupid你好,我是Tina,我今年18岁了;
var ss = str.format(obj);
console.log(ss);/// Cupid你好,我是Tina,我今年18岁了; var str1 = '{0}你好,我是{1},我今年{2}岁了';
var obj1 = ['Cupid', 'Tina', 18];
console.log(format(str1, obj1));
var ss1 = str1.format(obj1);
console.log(ss1); var str2 = '{0}你好,我是{1},我今年{2}岁了';
var obj2 = "";
/*
对象:{ v1: 'Cupid', v2: 'Tina', v3: 18 }
Json:{ "v1": "Cupid", "v2": "Tina", "v3": "18" }
注意:对象和JSON的区别
*/
</script>
</body>
</html>

  

Javascript format方法的更多相关文章

  1. JavaScript - reduce方法,reduceRight方法 (Array)

    JavaScript - reduce方法 (Array) 解释:reduce() 方法接收一个函数作为累加器(accumulator),数组 中的每个值(从左到右)开始合并,最终为一个值. 语法:a ...

  2. JavaScript slice() 方法

    JavaScript slice() 方法  JavaScript Array 对象 实例 在数组中读取元素: var fruits = ["Banana", "Oran ...

  3. JavaScript toLocaleString() 方法

    JavaScript toLocaleString() 方法 JavaScript Array 对象 定义和用法 把数组转换为本地字符串. 语法 arrayObject.toLocaleString( ...

  4. 关于JavaScript lastIndexOf() 方法 w3school.com.cn写的不一定全对

    关于JavaScript lastIndexOf() 方法 w3school.com.cn的表述是 定义和用法 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的 ...

  5. VFP自定义函数StringFormat (仿.NET String.Format 方法)

    VFP仿.NET String.Format 方法 将指定字符串中的每个{x}替换为相应值,并返回文本 *-- 调用格式 StringFormat("日期{2},字符{1}",&q ...

  6. javascript一些方法兼容

    javascript一些方法兼容 标签(空格分隔): javascript 方法收集 [TOC] Object.keys 参考地址 if (!Object.keys) Object.keys = fu ...

  7. php示例代码之类似于C#中的String.Format方法

    php示例代码之类似于C#中的String.Format方法 原文来自于  http://stackoverflow.com/questions/1241177/c-string-format-equ ...

  8. 在Swift中使用JavaScript的方法和技巧

    本文作者Nate Cook是一位独立的Web及移动应用开发者,是继Mattt大神之后NSHipster的主要维护者,也是非常知名活跃的Swift博主,并且还是支持自动生成Swift在线文档的Swift ...

  9. Java中利用MessageFormat对象实现类似C# string.Format方法格式化

    我们在写C#代码的时候常常会使用到string.Format("待格式化字符串{0},{1},....",参数1,参数2,...),来格式化字符串,特别是拼接字符的时候,这种方式使 ...

随机推荐

  1. React Native分析(index.ios.js)

    定义创建组件MyComponent(index.ios.js): 'use strict' var React = require('react-native'); var { AppRegistry ...

  2. React Native相关

    安装相关工具参考(视频):http://ninghao.net/course/3001?a=26 学习参考:http://reactnative.cn/ 学习参考:http://www.ruanyif ...

  3. spring 中的两个DaoSupport类的使用对比

    可以利用NamedParameterJdbcDaoSupport 已经封装的NamedParameterJdbcTemplate方便的进行sql中参数的初始化工作. 相对于JdbcDaoSupport ...

  4. linux安装R语言

    系统:centos 6.4  64bit 安装可以使用rpm包安装,也可以用源码安装. 但是rpm安装,各种依赖比较麻烦.所以我采用源码安装. 下载:http://www.r-project.org/ ...

  5. 使用 Bumblebee 控制 NVIDIA 双显卡

    简介 Nvidia的双显卡切换技术叫Optimus(擎天柱),可惜只能在win7.vista下实现.Linux下没有对应的技术,当然苹果也没有.这导致独立显卡一直在启用,显卡发热升温,风扇狂转,却没有 ...

  6. UIBezierPath 的使用介绍

         使用UIBezierPath类可以创建基于矢量的路径.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状 ...

  7. 将获得到的json赋值到下拉框

    $(function () { $.getJSON('handler/addEmployees.ashx', function (json) { alert(json.length); //遍历赋值 ...

  8. matlab 函数的编写与调用

    matlab中写个函数,在主程序中调用该函数的方法 跟其它的编程语言都一样,但是子函数与主函数要存于不同的文件中,文件名就是函数名字.文件必须保存在current directory中,才能调用. 函 ...

  9. 读Windows编程

    1.Windows是一个消息驱动系统.它通过把消息投入应用程序消息队列中或者把消息发送给合适的窗口消息处理程序,将发生的各种事件通知给应用程序 2.尽管一个动态链接库模块可能有其它扩展名(如.EXE或 ...

  10. XAML中ContentControl,ItemsControl,DataTemplate之间的联系和区别

    接触XAML很久了,但一直没有深入学习.今天学习了如标题所示的内容,所以来和大家分享一下,或者准确的说是自我回顾一遍. 在XAML中,有两类我们常见的控件,分别是ContentControl和Item ...