字符串格式化
我们的思路是利用replace方法
replace 本身是JavaScript字符串对象的一个方法,它允许接收两个参数:
replace([RegExp|String],[String|Function])
第1个参数可以是一个普通的字符串或是一个正则表达式
第2个参数可以是一个普通的字符串或是一个回调函数
如果第1个参数是RegExp, JS会先提取RegExp匹配出的结果,
然后用第2个参数逐一替换匹配出的结果
如果第2个参数是回调函数,每匹配到一个结果就回调一次,
每次回调都会传递以下参数:
result: 本次匹配到的结果
$1,...$9: 正则表达式中有几个(),就会传递几个参数,$1~$9分别代表本次匹配中
每个()提取的结果,最多9个
offset:记录本次匹配的开始位置
source:接受匹配的原始字符串
代码如下:
var name='nnnn{a1}KKKK{a2}LLLL'
var kwargs={'a1':'9999','a2':'666'}
String.prototype.format=function (kwargs) {
return this.replace(/\{(\w+)\}/g,function (k,v) {
console.log(k,v)//{a1} a1
return kwargs[v]
})
}
Newname=name.format(kwargs)
console.log(Newname)//nnnn9999KKKK666LLLL
注:/\{(\w+)\}/g 中,//表示里面是正则表达式,g表示匹配所有
----------------------------------------------------------------------------------------------------------------
Js所有的函数都有一个prototype属性,这个属性引用了一个对象,即原型对象,也简称原型。
function P() {
}
P.prototype.name='go'
P.prototype.sayname=function () {
alert(this.name)
}
var p1=new P()
p1.sayname()//go
对比python,相当与类的函数属性,每个类的实例对象都可以调用