padstart 의 poly fill

?
스타 를 환영 합 니 다.
오늘 ES7 에 새로 추 가 된 부분 인 Api 를 볼 때 마침 padstart 라 는 방법 을 보 았 습 니 다. 실 용적 인 것 같 습 니 다. 그리고 본 격 적 인 작업 을 시작 하기 전에 코드 를 쓰 는 느낌 을 찾 고 싶 어서 이 poly fill 을 이 루 었 습 니 다.
관련 API 용법 은 MDN 에 설명 되 어 있 습 니 다.링크 아래 구체 적 실현
if(!String.prototype.padStart)
    String.prototype.padStart = 
       //          fillString   ES6      ,     
        function (maxLength, fillString=' ') {
            if(Object.prototype.toString.call(fillString) !== "[object String]") throw new TypeError('fillString must be String')
            let str = this
            //    String(str)                  ,          
            if(str.length >= maxLength) return String(str)

            let fillLength = maxLength - str.length, 
                 times = Math.ceil(fillLength / fillString.length)
           
           //       ?
           // SICP       30               
            while(times >>= 1) { 
                fillString += fillString
                    if(times === 1){
                       fillString += fillString
                    }     
            }
            return fillString.slice(0, fillLength) + str  
        }
// padStart                           

'5'.padStart(2, '0') // '05'
'15'.padStart(2, '0') // '15'

ps: 쓰 고 나 서 갑자기 이것 이 npm 의 left-pad 라 이브 러 리 삭제 사건 인 것 같 습 니 다.많은 사람들 이 이 라 이브 러 리 를 다시 썼 던 것 을 어렴풋이 기억한다.anyway, 연습 의 목적 은 달성 한 셈 이다.

좋은 웹페이지 즐겨찾기