javascript常用實(shí)例的實(shí)現(xiàn)與封裝

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ì)象原型的修改很不推薦踢步!至少很多的公司禁止這樣操作癣亚!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贾虽,隨后出現(xiàn)的幾起案子逃糟,更是在濱河造成了極大的恐慌吼鱼,老刑警劉巖蓬豁,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異菇肃,居然都是意外死亡地粪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)琐谤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蟆技,“玉大人,你說(shuō)我怎么就攤上這事≈世瘢” “怎么了旺聚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)眶蕉。 經(jīng)常有香客問(wèn)我砰粹,道長(zhǎng),這世上最難降的妖魔是什么造挽? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任碱璃,我火速辦了婚禮,結(jié)果婚禮上饭入,老公的妹妹穿的比我還像新娘嵌器。我一直安慰自己,他們只是感情好谐丢,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布爽航。 她就那樣靜靜地躺著,像睡著了一般乾忱。 火紅的嫁衣襯著肌膚如雪岳掐。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天饭耳,我揣著相機(jī)與錄音串述,去河邊找鬼。 笑死寞肖,一個(gè)胖子當(dāng)著我的面吹牛纲酗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播新蟆,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼觅赊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了琼稻?” 一聲冷哼從身側(cè)響起吮螺,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帕翻,沒(méi)想到半個(gè)月后鸠补,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘀掸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年紫岩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睬塌。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泉蝌,死狀恐怖歇万,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勋陪,我是刑警寧澤贪磺,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站诅愚,受9級(jí)特大地震影響缘挽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜呻粹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一壕曼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧等浊,春花似錦腮郊、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至撒踪,卻和暖如春过咬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背制妄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工掸绞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耕捞。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓衔掸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親俺抽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敞映,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容