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('')
})

补全这里,还有一个格式化的功能还没写完,后续会继续更新

这几个扩展更详细的介绍可以看这里
去github上面查看更完整的代码

原文地址:https://www.cnblogs.com/jiangbingyang/p/5713256.html