es3中使用es6/7的字符串扩展
最近在看阮一峰的《ES6标准入门》,在字符串扩展一节中有提到几个新的扩展,觉得挺有意思,想在ES3里面使用,于是就有下面的兼容性写法。
repeat
将一个字符串重复n次
String.prototype.repeat||(String.prototype.repeat=function(number){
var r=[],i
if(Object.prototype.toString.call(number)!=='[object Number]'
||number<0){
return ''
}
number=parseInt(number)
for(i=0;i<number;i++){
r.push(this)
}
return r.join('')
})
includes
查找字符串中是否包含某字符串,返回bool值
String.prototype.includes||(String.prototype.includes=function(str,index){
return this.substr(index).indexOf(str)>0
})
startsWith
判断字符串是否以某个字符串开头,返回bool值
String.prototype.startsWith||(String.prototype.startsWith=function(str,index){
return this.substr(index).indexOf(str)===0
})
endsWith
判断字符串是否以某个字符串结尾,返回bool值
String.prototype.endsWith||(String.prototype.endsWith=function(str,index){
var v=this.substring(0,index)
return v.indexOf(str)===v.length-str.length
})
padStart padEnd
补全长度
String.prototype.padStart||(String.prototype.padStart=function(length,str){
var result=[]
length=length-this.length
str=(str||" ")+''
for(var i=0;i<length;i++){
result.push(str.substr(i%str.length,1))
}
result.push(this)
return result.join('')
})
String.prototype.padEnd||(String.prototype.padEnd=function(length,str){
var result=[this]
length=length-this.length
str=(str|| " ")+''
for(var i=0;i<length;i++){
result.push(str.substr(i%str.length,1))
}
return result.join('')
})
补全这里,还有一个格式化的功能还没写完,后续会继续更新