2-1去除字符串空格
//去除空格? type 1-所有空格? 2-前后空格? 3-前空格 4-后空格functiontrim(str,type){switch(type){case1:returnstr.replace(/\s+/g,"");case2:returnstr.replace(/(^\s*)|(\s*$)/g,"");case3:returnstr.replace(/(^\s*)/g,"");case4:returnstr.replace(/(\s*$)/g,"");default:returnstr;? ? }}
2-2字母大小寫(xiě)切換
/*type
1:首字母大寫(xiě)
2:首頁(yè)母小寫(xiě)
3:大小寫(xiě)轉(zhuǎn)換
4:全部大寫(xiě)
5:全部小寫(xiě)
* *///changeCase('asdasd',1)//AsdasdfunctionchangeCase(str,type){functionToggleCase(str){varitemText =""str.split("").forEach(function(item){if(/^([a-z]+)/.test(item)) {? ? ? ? ? ? ? ? ? ? itemText += item.toUpperCase();? ? ? ? ? ? ? ? }elseif(/^([A-Z]+)/.test(item)) {? ? ? ? ? ? ? ? ? ? itemText += item.toLowerCase();? ? ? ? ? ? ? ? }else{? ? ? ? ? ? ? ? ? ? itemText += item;? ? ? ? ? ? ? ? }? ? ? ? ? ? });returnitemText;? ? }switch(type) {case1:returnstr.replace(/^(\w)(\w+)/,function(v, v1, v2){returnv1.toUpperCase() + v2.toLowerCase();? ? ? ? ? ? });case2:returnstr.replace(/^(\w)(\w+)/,function(v, v1, v2){returnv1.toLowerCase() + v2.toUpperCase();? ? ? ? ? ? });case3:returnToggleCase(str);case4:returnstr.toUpperCase();case5:returnstr.toLowerCase();default:returnstr;? ? }}
2-3字符串循環(huán)復(fù)制
//repeatStr(str->字符串, count->次數(shù))//repeatStr('123',3)//"123123123"function repeatStr(str,count) {? ? vartext='';for(var i =0; i
2-4字符串替換
//字符串替換(字符串,要替換的字符,替換成什么)functionreplaceAll(str,AFindText,ARepText){ raRegExp =newRegExp(AFindText,"g");returnstr.replace(raRegExp,ARepText);}
2-5替換*
//replaceStr(字符串,字符格式, 替換方式,替換的字符(默認(rèn)*))functionreplaceStr(str, regArr,type,ARepText){varregtext ='', Reg =null,replaceText=ARepText||'*';//replaceStr('18819322663',[3,5,3],0)//188*****663//repeatStr是在上面定義過(guò)的(字符串循環(huán)復(fù)制)月褥,大家注意哦if(regArr.length ===3&&type===0) {? ? ? ? regtext ='(\\w{'+ regArr[0] +'})\\w{'+ regArr[1] +'}(\\w{'+ regArr[2] +'})'Reg =newRegExp(regtext);varreplaceCount = repeatStr(replaceText, regArr[1]);returnstr.replace(Reg,'$1'+ replaceCount +'$2')? ? }//replaceStr('asdasdasdaa',[3,5,3],1)//***asdas***elseif(regArr.length ===3&&type===1) {? ? ? ? regtext ='\\w{'+ regArr[0] +'}(\\w{'+ regArr[1] +'})\\w{'+ regArr[2] +'}'Reg =newRegExp(regtext);varreplaceCount1 = repeatSte(replaceText, regArr[0]);varreplaceCount2 = repeatSte(replaceText, regArr[2]);returnstr.replace(Reg, replaceCount1 +'$1'+ replaceCount2)? ? }//replaceStr('1asd88465asdwqe3',[5],0)//*****8465asdwqe3elseif(regArr.length ===1&&type==0) {? ? ? ? regtext ='(^\\w{'+ regArr[0] +'})'Reg =newRegExp(regtext);varreplaceCount = repeatSte(replaceText, regArr[0]);returnstr.replace(Reg, replaceCount)? ? }//replaceStr('1asd88465asdwqe3',[5],1,'+')//"1asd88465as+++++"elseif(regArr.length ===1&&type==1) {? ? ? ? regtext ='(\\w{'+ regArr[0] +'}$)'Reg =newRegExp(regtext);varreplaceCount = repeatSte(replaceText, regArr[0]);returnstr.replace(Reg, replaceCount)? ? }}
2-6檢測(cè)字符串
//checkType('165226226326','phone')//false//大家可以根據(jù)需要擴(kuò)展functioncheckType(str,type){switch(type) {case'email':return/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str);case'phone':return/^1[3|4|5|7|8][0-9]{9}$/.test(str);case'tel':return/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str);case'number':return/^[0-9]$/.test(str);case'english':return/^[a-zA-Z]+$/.test(str);case'chinese':return/^[\u4E00-\u9FA5]+$/.test(str);case'lower':return/^[a-z]+$/.test(str);case'upper':return/^[A-Z]+$/.test(str);default:returntrue;? ? }}
2-7檢測(cè)密碼強(qiáng)度
//checkPwd('12asdASAD')//3(強(qiáng)度等級(jí)為3)functioncheckPwd(str){varnowLv =0;if(str.length <6) {returnnowLv? ? }? ? ;if(/[0-9]/.test(str)) {? ? ? ? nowLv++? ? }? ? ;if(/[a-z]/.test(str)) {? ? ? ? nowLv++? ? }? ? ;if(/[A-Z]/.test(str)) {? ? ? ? nowLv++? ? }? ? ;if(/[\.|-|_]/.test(str)) {? ? ? ? nowLv++? ? }? ? ;returnnowLv;}
2-8隨機(jī)碼(toString詳解)
//count取值范圍0-36//randomNumber(10)//"2584316588472575"http://randomNumber(14)//"9b405070dd00122640c192caab84537"http://Math.random().toString(36).substring(2);//"83vhdx10rmjkyb9"functionrandomNumber(count){returnMath.random().toString(count).substring(2);}
2-9查找字符串
可能標(biāo)題會(huì)有點(diǎn)誤導(dǎo),下面我就簡(jiǎn)單說(shuō)明一個(gè)需求,在字符串'sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967'中找出'blog'的出現(xiàn)次數(shù)缆蝉。代碼如下
functioncountStr(str,strSplit){returnstr.split(strSplit).length-1}varstrTest='sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967'//countStr(strTest,'blog')//6
3.數(shù)組操作
3-1數(shù)組去重
這個(gè)方法是在太多了哄啄,我之前寫(xiě)的文章(js數(shù)組操作--使用迭代方法替代for循環(huán),js關(guān)鍵詞變色迁霎,數(shù)組打亂肉盹,數(shù)組去重的實(shí)現(xiàn)和封裝)也有提到烹看,我今天這里就寫(xiě)一種之前沒(méi)用過(guò)的方法国拇。
//ES6新增的Set數(shù)據(jù)結(jié)構(gòu),類(lèi)似于數(shù)組惯殊,但是里面的元素都是唯一的 酱吝,其構(gòu)造函數(shù)可以接受一個(gè)數(shù)組作為參數(shù)//let arr=[1,2,1,2,6,3,5,69,66,7,2,1,4,3,6,8,9663,8]//let set = new Set(array);//{1,2,6,3,5,69,66,7,4,8,9663}//ES6中Array新增了一個(gè)靜態(tài)方法from,可以把類(lèi)似數(shù)組的對(duì)象轉(zhuǎn)換為數(shù)組//Array.from(set)//[1,2,6,3,5,69,66,7,4,8,9663]functionremoveRepeatArray(arr){returnArray.from(newSet(arr))}
3-2數(shù)組順序打亂
functionupsetArr(arr){returnarr.sort(function(){returnMath.random() -0.5});}
3-3數(shù)組最大值最小值
//這一塊的封裝靠胜,主要是針對(duì)數(shù)字類(lèi)型的數(shù)組functionmaxArr(arr){returnMath.max.apply(null,arr);}functionminArr(arr){returnMath.min.apply(null,arr);}
3-4數(shù)組求和掉瞳,平均值
//這一塊的封裝毕源,主要是針對(duì)數(shù)字類(lèi)型的數(shù)組//求和functionsumArr(arr){varsumText=0;for(vari=0,len=arr.length;i
3-5從數(shù)組中隨機(jī)獲取元素
//randomOne([1,2,3,6,8,5,4,2,6])//2//randomOne([1,2,3,6,8,5,4,2,6])//8//randomOne([1,2,3,6,8,5,4,2,6])//8//randomOne([1,2,3,6,8,5,4,2,6])//1functionrandomOne(arr){returnarr[Math.floor(Math.random() * arr.length)];}
3-6返回?cái)?shù)組(字符串)一個(gè)元素出現(xiàn)的次數(shù)
//getEleCount('asd56+asdasdwqe','a')//3//getEleCount([1,2,3,4,5,66,77,22,55,22],22)//2functiongetEleCount(obj, ele){varnum =0;for(vari =0, len = obj.length; i < len; i++) {if(ele == obj[i]) {? ? ? ? ? ? num++;? ? ? ? }? ? }returnnum;}
3-7返回?cái)?shù)組(字符串)出現(xiàn)最多的幾次元素和出現(xiàn)次數(shù)
//arr, rank->長(zhǎng)度浪漠,默認(rèn)為數(shù)組長(zhǎng)度,ranktype霎褐,排序方式址愿,默認(rèn)降序functiongetCount(arr, rank,ranktype){varobj = {}, k, arr1 = []//記錄每一元素出現(xiàn)的次數(shù)for(vari =0, len = arr.length; i < len; i++) {? ? ? ? k = arr[i];if(obj[k]) {? ? ? ? ? ? obj[k]++;? ? ? ? }else{? ? ? ? ? ? obj[k] =1;? ? ? ? }? ? }//保存結(jié)果{el-'元素'冻璃,count-出現(xiàn)次數(shù)}for(varoinobj) {? ? ? ? arr1.push({el: o, count: obj[o]});? ? }//排序(降序)arr1.sort(function(n1, n2){returnn2.count - n1.count? ? });//如果ranktype為1响谓,則為升序,反轉(zhuǎn)數(shù)組if(ranktype===1){? ? ? ? arr1=arr1.reverse();? ? }varrank1 = rank || arr1.length;returnarr1.slice(0,rank1);}
getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2])
默認(rèn)情況省艳,返回所有元素出現(xiàn)的次數(shù)
getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],3)
傳參(rank=3)娘纷,只返回出現(xiàn)次數(shù)排序前三的
getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],null,1)
傳參(ranktype=1,rank=null),升序返回所有元素出現(xiàn)次數(shù)
getCount([1,2,3,1,2,5,2,4,1,2,6,2,1,3,2],3,1)
傳參(rank=3跋炕,ranktype=1)赖晶,只返回出現(xiàn)次數(shù)排序(升序)前三的
3-8得到n1-n2下標(biāo)的數(shù)組
//getArrayNum([0,1,2,3,4,5,6,7,8,9],5,9)//[5, 6, 7, 8, 9]//getArrayNum([0,1,2,3,4,5,6,7,8,9],2) 不傳第二個(gè)參數(shù),默認(rèn)返回從n1到數(shù)組結(jié)束的元素//[2, 3, 4, 5, 6, 7, 8, 9]functiongetArrayNum(arr,n1,n2){vararr1=[],len=n2||arr.length-1;for(vari=n1;i<=len;i++){? ? ? ? arr1.push(arr[i])? ? }returnarr1;}
3-9篩選數(shù)組
/刪除值為'val'的數(shù)組元素//removeArrayForValue(['test','test1','test2','test','aaa'],'test','%')//["aaa"]? 帶有'test'的都刪除? ? //removeArrayForValue(['test','test1','test2','test','aaa'],'test')//["test1","test2","aaa"]? //數(shù)組元素的值全等于'test'才被刪除functionremoveArrayForValue(arr,val,type){? ? arr.filter(function(item){returntype==='%'?item.indexOf(val)!==-1:item!==val})}
4.基礎(chǔ)DOM操作
這個(gè)部分代碼其實(shí)參考jquery的一些函數(shù)寫(xiě)法,唯一區(qū)別就是調(diào)用不用,參數(shù)一樣.比如下面的栗子
//設(shè)置對(duì)象內(nèi)容jquery:$('#xxx').html('hello world');現(xiàn)在:html(document.getElementById('xxx'),'hello world')//獲取對(duì)象內(nèi)容jquery:$('#xxx').html();現(xiàn)在:html(document.getElementById('xxx'))
4-1檢測(cè)對(duì)象是否有哪個(gè)類(lèi)名
functionhasClass(obj,classStr){vararr=obj.className.split(/\s+/);//這個(gè)正則表達(dá)式是因?yàn)閏lass可以有多個(gè),判斷是否包含return(arr.indexOf(classStr)==-1)?false:true;},
4-2添加類(lèi)名
functionaddClass(obj,classStr){if(!this.hasClass(obj,classStr)){obj.className +=" "+ classStr};},
4-3刪除類(lèi)名
functionremoveClass(obj,classStr){if(this.hasClass(obj,classStr)) {varreg =newRegExp('(\\s|^)'+ classStr +'(\\s|$)');? ? ? ? obj.className = obj.className.replace(reg,'');? ? }},
4-4替換類(lèi)名("被替換的類(lèi)名","替換的類(lèi)名")
functionreplaceClass(obj,newName,oldName) {? ? removeClass(obj,oldName);? ? addClass(obj,newName);}
4-5獲取兄弟節(jié)點(diǎn)
functionsiblings(obj){vara=[];//定義一個(gè)數(shù)組遏插,用來(lái)存o的兄弟元素varp=obj.previousSibling;while(p){//先取o的哥哥們 判斷有沒(méi)有上一個(gè)哥哥元素捂贿,如果有則往下執(zhí)行 p表示previousSiblingif(p.nodeType===1){? ? ? ? a.push(p);? ? ? ? }? ? ? ? p=p.previousSibling//最后把上一個(gè)節(jié)點(diǎn)賦給p}? ? a.reverse()//把順序反轉(zhuǎn)一下 這樣元素的順序就是按先后的了varn=obj.nextSibling;//再取o的弟弟while(n){//判斷有沒(méi)有下一個(gè)弟弟結(jié)點(diǎn) n是nextSibling的意思if(n.nodeType===1){? ? ? ? ? ? a.push(n);? ? ? ? }? ? ? ? n=n.nextSibling;? ? }returna;},
4-6設(shè)置樣式
functioncss(obj,json){for(varattrinjson){? ? ? ? obj.style[attr]=json[attr];? ? }}
4-7設(shè)置文本內(nèi)容
functionhtml(obj){if(arguments.length==0){returnthis.innerHTML;? ? }elseif(arguments.length==1){this.innerHTML=arguments[0];? ? }}
4-8顯示隱藏
functionshow(obj){? ? obj.style.display="";}functionhide(obj){? ? obj.style.display="none";}
5.其他操作
5-1cookie
//cookie//設(shè)置cookiefunctionsetCookie(name,value,iDay){varoDate=newDate();? ? oDate.setDate(oDate.getDate()+iDay);document.cookie=name+'='+value+';expires='+oDate;}//獲取cookiefunctiongetCookie(name){vararr=document.cookie.split('; ');for(vari=0;i
5-2清除對(duì)象中值為空的屬性
//filterParams({a:"",b:null,c:"010",d:123})//Object {c: "010", d: 123}functionfilterParams(obj){let_newPar = {};for(letkeyinobj) {if((obj[key] ===0|| obj[key]) && obj[key].toString().replace(/(^\s*)|(\s*$)/g,'') !=='') {? ? ? ? ? ? _newPar[key] = obj[key];? ? ? ? }? ? }return_newPar;}
5-3現(xiàn)金額大寫(xiě)轉(zhuǎn)換函數(shù)
//upDigit(168752632)//"人民幣壹億陸仟捌佰柒拾伍萬(wàn)貳仟陸佰叁拾貳元整"http://upDigit(1682)//"人民幣壹仟陸佰捌拾貳元整"http://upDigit(-1693)//"欠人民幣壹仟陸佰玖拾叁元整"functionupDigit(n){varfraction = ['角','分','厘'];vardigit = ['零','壹','貳','叁','肆','伍','陸','柒','捌','玖'];varunit = [ ['元','萬(wàn)','億'], ['','拾','佰','仟']? ];varhead = n <0?'欠人民幣':'人民幣';? ? ? n =Math.abs(n);vars ='';for(vari =0; i < fraction.length; i++)? ? ? {? ? ? ? s += (digit[Math.floor(n *10*Math.pow(10, i)) %10] + fraction[i]).replace(/零./,'');? ? }? ? s = s ||'整';? ? ? n =Math.floor(n);for(vari =0; i < unit[0].length && n >0; i++)? ? ? {varp ='';for(varj =0; j < unit[1].length && n >0; j++)? ? ? ? ? {? ? ? ? ? ? ? p = digit[n %10] + unit[1][j] + p;? ? ? ? ? ? n =Math.floor(n /10);? ? ? ? }//s = p.replace(/(零.)*零$/, '').replace(/^$/, '零')+ unit[0][i] + s;s = p+ unit[0][i] + s;? ? }returnhead + s.replace(/(零.)*零元/,'元').replace(/(零.)+/g,'零').replace(/^整$/,'零元整');}
5-4獲取,設(shè)置url參數(shù)
//獲取url參數(shù)//getUrlPrmt('segmentfault.com/write?draftId=122000011938')//Object{draftId: "122000011938"}functiongetUrlPrmt(url){url=url?url:window.location.href;let_pa =url.substring(url.indexOf('?') +1), _arrS = _pa.split('&'), _rs = {};for(leti =0, _len = _arrS.length; i < _len; i++) {letpos = _arrS[i].indexOf('=');if(pos ==-1) {continue;? ? ? ? }letname = _arrS[i].substring(0, pos), value =window.decodeURIComponent(_arrS[i].substring(pos +1));? ? ? ? _rs[name] = value;? ? }return_rs;}//設(shè)置url參數(shù)//setUrlPrmt({'a':1,'b':2})//a=1&b=2functionsetUrlPrmt(obj){let_rs = [];for(letpinobj) {if(obj[p] !=null&& obj[p] !='') {? ? ? ? ? ? _rs.push(p +'='+ obj[p])? ? ? ? }? ? }return_rs.join('&');}
5-5隨機(jī)返回一個(gè)范圍的數(shù)字
functionrandomNumber(n1,n2){//randomNumber(5,10)//返回5-10的隨機(jī)整數(shù)胳嘲,包括5厂僧,10if(arguments.length===2){returnMath.round(n1+Math.random()*(n2-n1));? ? }//randomNumber(10)//返回0-10的隨機(jī)整數(shù),包括0了牛,10elseif(arguments.length===1){returnMath.round(Math.random()*n1)? ? }//randomNumber()//返回0-255的隨機(jī)整數(shù)颜屠,包括0,255else{returnMath.round(Math.random()*255)? ? }? }
5-6隨進(jìn)產(chǎn)生顏色
functionrandomColor(){//randomNumber是上面定義的函數(shù)//寫(xiě)法1return'rgb('+ randomNumber(255) +','+ randomNumber(255) +','+ randomNumber(255) +')';//寫(xiě)法2return'#'+Math.random().toString(16).substring(2).substr(0,6);//寫(xiě)法3varcolor='#';for(vari=0;i<6;i++){color+='0123456789abcdef'[randomNumber(15)];? ? }returncolor;}
//這種寫(xiě)法白魂,偶爾會(huì)有問(wèn)題汽纤。大家得注意哦
//Math.floor(Math.random()*0xffffff).toString(16);
5-7Date日期時(shí)間部分
//到某一個(gè)時(shí)間的倒計(jì)時(shí)//getEndTime('2017/7/22 16:0:0')//"剩余時(shí)間6天 2小時(shí) 28 分鐘20 秒"functiongetEndTime(endTime){varstartDate=newDate();//開(kāi)始時(shí)間,當(dāng)前時(shí)間varendDate=newDate(endTime);//結(jié)束時(shí)間福荸,需傳入時(shí)間參數(shù)vart=endDate.getTime()-startDate.getTime();//時(shí)間差的毫秒數(shù)vard=0,h=0,m=0,s=0;if(t>=0){? ? ? d=Math.floor(t/1000/3600/24);? ? ? h=Math.floor(t/1000/60/60%24);? ? ? m=Math.floor(t/1000/60%60);? ? ? s=Math.floor(t/1000%60);? ? }return"剩余時(shí)間"+d+"天 "+h+"小時(shí) "+m+" 分鐘"+s+" 秒";}
5-8適配rem
這個(gè)適配的方法很多蕴坪,我就寫(xiě)我自己用的方法。大家也可以去我回答過(guò)得一個(gè)問(wèn)題那里看更詳細(xì)的說(shuō)明敬锐!移動(dòng)端適配問(wèn)題
functiongetFontSize(){vardoc=document,win=window;vardocEl = doc.documentElement,? ? resizeEvt ='orientationchange'inwindow?'orientationchange':'resize',? ? recalc =function(){varclientWidth = docEl.clientWidth;if(!clientWidth)return;//如果屏幕大于750(750是根據(jù)我效果圖設(shè)置的背传,具體數(shù)值參考效果圖),就設(shè)置clientWidth=750台夺,防止font-size會(huì)超過(guò)100pxif(clientWidth>750){clientWidth=750}//設(shè)置根元素font-size大小docEl.style.fontSize =100* (clientWidth /750) +'px';? ? };//屏幕大小改變径玖,或者橫豎屏切換時(shí),觸發(fā)函數(shù)win.addEventListener(resizeEvt, recalc,false);//文檔加載完成時(shí)颤介,觸發(fā)函數(shù)doc.addEventListener('DOMContentLoaded', recalc,false);}//使用方式很簡(jiǎn)單梳星,比如效果圖上,有張圖片滚朵。寬高都是100px;//樣式寫(xiě)法就是img{width:1rem;? ? height:1rem;}//這樣的設(shè)置冤灾,比如在屏幕寬度大于等于750px設(shè)備上,1rem=100px辕近;圖片顯示就是寬高都是100px//比如在iphone6(屏幕寬度:375)上韵吨,375/750*100=50px;就是1rem=50px;圖片顯示就是寬高都是50px;
6.封裝成形
寫(xiě)了這么多的操作,小伙伴應(yīng)該發(fā)現(xiàn)了一問(wèn)題移宅,全局函數(shù)太多了
//這樣的話(huà)归粉,封裝了幾個(gè)操作,就增加了幾個(gè)全局函數(shù)漏峰,污染了全局變量糠悼,在開(kāi)發(fā)中應(yīng)該盡量避免全局變量。不說(shuō)別的浅乔,如果一個(gè)項(xiàng)目倔喂,幾個(gè)人開(kāi)發(fā),很有可能會(huì)造成命名的沖突。function setUrlPrmt(obj){..}function getUrlPrmt(url){..}function upsetArr(obj){..}//所以滴劲,建議的封裝姿勢(shì)是varmyJS={? ? setUrlPrmt:function(obj){..},? ? getUrlPrmt:function(url){..},? ? upsetArr:function(arr){..},}這樣就算別人也寫(xiě)這樣的函數(shù),也不會(huì)造成沖突攻晒。全局變量也只有一個(gè),加上別人也不會(huì)很多班挖!varotherJS={? ? setUrlPrmt:function(obj){..},? ? getUrlPrmt:function(url){..},? ? upsetArr:function(arr){..},}//最后鲁捏,封裝的效果是varmyJS={? ? //去除字符串空格? ? trim:function(obj){..},? ? //字母大小寫(xiě)切換? ? changeCase:function(obj){..},? ? //字符串循環(huán)復(fù)制? ? repeatStr:function(str){..},? ? .....}//如果是es6的模塊化開(kāi)發(fā),大家也可以letmyJS={? ? //去除字符串空格? ? trim:function(obj){..},? ? //字母大小寫(xiě)切換? ? changeCase:function(obj){..},? ? //字符串循環(huán)復(fù)制? ? repeatStr:function(str){..},? ? .....}//暴露模塊萧芙,里面的方式大家也可以用es6方式實(shí)現(xiàn)给梅,代碼至少會(huì)少一點(diǎn)!export{myJS}
可能有小伙伴會(huì)有疑問(wèn)双揪,這樣封裝动羽,調(diào)用有點(diǎn)麻煩,為什么不直接在原型上面封裝渔期,調(diào)用方便运吓。比如下面的栗子!
String.prototype.trim=function(type){switch(type){case1:returnthis.replace(/\s+/g,"");case2:returnthis.replace(/(^\s*)|(\s*$)/g,"");case3:returnthis.replace(/(^\s*)/g,"");case4:returnthis.replace(/(\s*$)/g,"");default:returnthis;? ? }}//'? 12345 6 8 96? '.trim(1)//"123456896"http://比這樣trim('? 12345 6 8 96? ',1)調(diào)用方便疯趟。//但是拘哨,這樣是不推薦的做法,這樣就污染了原生對(duì)象String,別人創(chuàng)建的String也會(huì)被污染信峻,造成不必要的開(kāi)銷(xiāo)倦青。//更可怕的是,萬(wàn)一自己命名的跟原生的方法重名了盹舞,就被覆蓋原來(lái)的方法了//String.prototype.substr=function(){console.log('asdasd')}//'asdasdwe46546'.substr()//asdasd//substr方法有什么作用产镐,大家應(yīng)該知道,不知道的可以去w3c看下
所以在原生對(duì)象原型的修改很不推薦踢步!至少很多的公司禁止這樣操作癣亚!