摘要:我自己封裝這個(gè),并不是我有造輪子的習(xí)慣,而是,都是一些常用,但是零散的小實(shí)例,網(wǎng)上基本沒(méi)有插件。,因?yàn)榱闵⒌男?shí)例,涉及到的有字符串,數(shù)組,對(duì)象等類型,就算找到插件,在項(xiàng)目引入的很有可能不止一個(gè)插件。都是簡(jiǎn)單的代碼,封裝也不難。
1.前言
因?yàn)楣咀罱?xiàng)目比較忙,沒(méi)那么多空余的事件寫文章了,所以這篇文章晚了幾天發(fā)布。但是這也沒(méi)什么關(guān)系,不過(guò)該來(lái)的,總是會(huì)來(lái)的。
好了,其他的不多說(shuō)的,大家在開(kāi)發(fā)的時(shí)候應(yīng)該知道,有很多常見(jiàn)的實(shí)例操作。比如數(shù)組去重,關(guān)鍵詞高亮,打亂數(shù)組等。這些操作,代碼一般不會(huì)很多,實(shí)現(xiàn)的邏輯也不會(huì)很難,下面的代碼,我解釋就不解釋太多了,打上注釋,相信大家就會(huì)懂了。但是,用的地方會(huì)比較,如果項(xiàng)目有哪個(gè)地方需要用,如果重復(fù)寫的話,就是代碼沉余,開(kāi)發(fā)效率也不用,復(fù)用基本就是復(fù)制粘貼!這樣是一個(gè)很不好的習(xí)慣,大家可以考慮一下把一些常見(jiàn)的操作封裝成函數(shù),調(diào)用的時(shí)候,直接調(diào)用就好!
源碼都放在github上了,大家想以后以后有什么修改或者增加的,歡迎大家來(lái)star一下ec-do。
//去除空格 type 1-所有空格 2-前后空格 3-前空格 4-后空格 function trim(str,type){ switch (type){ case 1:return str.replace(/s+/g,""); case 2:return str.replace(/(^s*)|(s*$)/g, ""); case 3:return str.replace(/(^s*)/g, ""); case 4:return str.replace(/(s*$)/g, ""); default:return str; } }2-2字母大小寫切換
/*type 1:首字母大寫 2:首頁(yè)母小寫 3:大小寫轉(zhuǎn)換 4:全部大寫 5:全部小寫 * */ //changeCase("asdasd",1) //Asdasd function changeCase(str,type) { function ToggleCase(str) { var itemText = "" str.split("").forEach( function (item) { if (/^([a-z]+)/.test(item)) { itemText += item.toUpperCase(); } else if (/^([A-Z]+)/.test(item)) { itemText += item.toLowerCase(); } else{ itemText += item; } }); return itemText; } switch (type) { case 1: return str.replace(/^(w)(w+)/, function (v, v1, v2) { return v1.toUpperCase() + v2.toLowerCase(); }); case 2: return str.replace(/^(w)(w+)/, function (v, v1, v2) { return v1.toLowerCase() + v2.toUpperCase(); }); case 3: return ToggleCase(str); case 4: return str.toUpperCase(); case 5: return str.toLowerCase(); default: return str; } }2-3字符串循環(huán)復(fù)制
//repeatStr(str->字符串, count->次數(shù)) //repeatStr("123",3) //"123123123" function repeatStr(str, count) { var text = ""; for (var i = 0; i < count; i++) { text += str; } return text; }2-4字符串替換
//字符串替換(字符串,要替換的字符,替換成什么) function replaceAll(str,AFindText,ARepText){ raRegExp = new RegExp(AFindText,"g"); return str.replace(raRegExp,ARepText); }2-5替換*
//replaceStr(字符串,字符格式, 替換方式,替換的字符(默認(rèn)*)) function replaceStr(str, regArr, type,ARepText) { var regtext = "", 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 = new RegExp(regtext); var replaceCount = repeatStr(replaceText, regArr[1]); return str.replace(Reg, "$1" + replaceCount + "$2") } //replaceStr("asdasdasdaa",[3,5,3],1) //***asdas*** else if (regArr.length === 3 && type === 1) { regtext = "w{" + regArr[0] + "}(w{" + regArr[1] + "})w{" + regArr[2] + "}" Reg = new RegExp(regtext); var replaceCount1 = repeatSte(replaceText, regArr[0]); var replaceCount2 = repeatSte(replaceText, regArr[2]); return str.replace(Reg, replaceCount1 + "$1" + replaceCount2) } //replaceStr("1asd88465asdwqe3",[5],0) //*****8465asdwqe3 else if (regArr.length === 1 && type == 0) { regtext = "(^w{" + regArr[0] + "})" Reg = new RegExp(regtext); var replaceCount = repeatSte(replaceText, regArr[0]); return str.replace(Reg, replaceCount) } //replaceStr("1asd88465asdwqe3",[5],1,"+") //"1asd88465as+++++" else if (regArr.length === 1 && type == 1) { regtext = "(w{" + regArr[0] + "}$)" Reg = new RegExp(regtext); var replaceCount = repeatSte(replaceText, regArr[0]); return str.replace(Reg, replaceCount) } }2-6檢測(cè)字符串
//checkType("165226226326","phone") //false //大家可以根據(jù)需要擴(kuò)展 function checkType (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 /^(0d{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 : return true; } }2-7檢測(cè)密碼強(qiáng)度
//checkPwd("12asdASAD") //3(強(qiáng)度等級(jí)為3) function checkPwd(str) { var nowLv = 0; if (str.length < 6) { return nowLv } ; if (/[0-9]/.test(str)) { nowLv++ } ; if (/[a-z]/.test(str)) { nowLv++ } ; if (/[A-Z]/.test(str)) { nowLv++ } ; if (/[.|-|_]/.test(str)) { nowLv++ } ; return nowLv; }2-8隨機(jī)碼(toString詳解)
//count取值范圍0-36 //randomNumber(10) //"2584316588472575" //randomNumber(14) //"9b405070dd00122640c192caab84537" //Math.random().toString(36).substring(2); //"83vhdx10rmjkyb9" function randomNumber(count){ return Math.random().toString(count).substring(2); }2-9查找字符串
可能標(biāo)題會(huì)有點(diǎn)誤導(dǎo),下面我就簡(jiǎn)單說(shuō)明一個(gè)需求,在字符串"sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967"中找出"blog"的出現(xiàn)次數(shù)。代碼如下
function countStr (str,strSplit){ return str.split(strSplit).length-1 } var strTest="sad44654blog5a1sd67as9dablog4s5d16zxc4sdweasjkblogwqepaskdkblogahseiuadbhjcibloguyeajzxkcabloguyiwezxc967" //countStr(strTest,"blog") //63.數(shù)組操作 3-1數(shù)組去重
這個(gè)方法是在太多了,我之前寫的文章(js數(shù)組操作--使用迭代方法替代for循環(huán),js關(guān)鍵詞變色,數(shù)組打亂,數(shù)組去重的實(shí)現(xiàn)和封裝)也有提到,我今天這里就寫一種之前沒(méi)用過(guò)的方法。
//ES6新增的Set數(shù)據(jù)結(jié)構(gòu),類似于數(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,可以把類似數(shù)組的對(duì)象轉(zhuǎn)換為數(shù)組 //Array.from(set) //[1,2,6,3,5,69,66,7,4,8,9663] function removeRepeatArray(arr){ return Array.from(new Set(arr)) }3-2數(shù)組順序打亂
function upsetArr(arr){ return arr.sort(function(){ return Math.random() - 0.5}); }3-3數(shù)組最大值最小值
//這一塊的封裝,主要是針對(duì)數(shù)字類型的數(shù)組 function maxArr(arr){ return Math.max.apply(null,arr); } function minArr(arr){ return Math.min.apply(null,arr); }3-4數(shù)組求和,平均值
//這一塊的封裝,主要是針對(duì)數(shù)字類型的數(shù)組 //求和 function sumArr(arr){ var sumText=0; for(var i=0,len=arr.length;i3-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]) //1 function randomOne(arr) { return arr[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) //2 function getEleCount (obj, ele) { var num = 0; for (var i = 0, len = obj.length; i < len; i++) { if (ele == obj[i]) { num++; } } return num; }3-7返回?cái)?shù)組(字符串)出現(xiàn)最多的幾次元素和出現(xiàn)次數(shù)//arr, rank->長(zhǎng)度,默認(rèn)為數(shù)組長(zhǎng)度,ranktype,排序方式,默認(rèn)降序 function getCount(arr, rank,ranktype){ var obj = {}, k, arr1 = [] //記錄每一元素出現(xiàn)的次數(shù) for (var i = 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 (var o in obj) { arr1.push({el: o, count: obj[o]}); } //排序(降序) arr1.sort(function (n1, n2) { return n2.count - n1.count }); //如果ranktype為1,則為升序,反轉(zhuǎn)數(shù)組 if(ranktype===1){ arr1=arr1.reverse(); } var rank1 = rank || arr1.length; return arr1.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)
3-8得到n1-n2下標(biāo)的數(shù)組
傳參(rank=3,ranktype=1),只返回出現(xiàn)次數(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] function getArrayNum(arr,n1,n2){ var arr1=[],len=n2||arr.length-1; for(var i=n1;i<=len;i++){ arr1.push(arr[i]) } return arr1; }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"才被刪除 function removeArrayForValue(arr,val,type){ return arr.filter(function (item) { return type? item.indexOf(val) === -1 : item !== val }) }4.基礎(chǔ)DOM操作這個(gè)部分代碼其實(shí)參考jquery的一些函數(shù)寫法,唯一區(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è)類名function hasClass(obj,classStr){ var arr=obj.className.split(/s+/); //這個(gè)正則表達(dá)式是因?yàn)閏lass可以有多個(gè),判斷是否包含 return (arr.indexOf(classStr)==-1)?false:true; },4-2添加類名function addClass(obj,classStr){ if (!this.hasClass(obj,classStr)){obj.className += " " + classStr}; },4-3刪除類名function removeClass(obj,classStr){ if (this.hasClass(obj,classStr)) { var reg = new RegExp("(s|^)" + classStr + "(s|$)"); obj.className = obj.className.replace(reg, ""); } },4-4替換類名("被替換的類名","替換的類名")function replaceClass(obj,newName,oldName) { removeClass(obj,oldName); addClass(obj,newName); }4-5獲取兄弟節(jié)點(diǎn)function siblings(obj){ var a=[];//定義一個(gè)數(shù)組,用來(lái)存o的兄弟元素 var p=obj.previousSibling; while(p){//先取o的哥哥們 判斷有沒(méi)有上一個(gè)哥哥元素,如果有則往下執(zhí)行 p表示previousSibling if(p.nodeType===1){ a.push(p); } p=p.previousSibling//最后把上一個(gè)節(jié)點(diǎn)賦給p } a.reverse()//把順序反轉(zhuǎn)一下 這樣元素的順序就是按先后的了 var n=obj.nextSibling;//再取o的弟弟 while(n){//判斷有沒(méi)有下一個(gè)弟弟結(jié)點(diǎn) n是nextSibling的意思 if(n.nodeType===1){ a.push(n); } n=n.nextSibling; } return a; },4-6設(shè)置樣式function css(obj,json){ for(var attr in json){ obj.style[attr]=json[attr]; } }4-7設(shè)置文本內(nèi)容function html(obj){ if(arguments.length==0){ return this.innerHTML; } else if(arguments.length==1){ this.innerHTML=arguments[0]; } }4-8顯示隱藏function show(obj){ obj.style.display=""; } function hide(obj){ obj.style.display="none"; }5.其他操作 5-1cookie//cookie //設(shè)置cookie function setCookie(name,value,iDay){ var oDate=new Date(); oDate.setDate(oDate.getDate()+iDay); document.cookie=name+"="+value+";expires="+oDate; } //獲取cookie function getCookie(name){ var arr=document.cookie.split("; "); for(var i=0;i5-2清除對(duì)象中值為空的屬性 //filterParams({a:"",b:null,c:"010",d:123}) //Object {c: "010", d: 123} function filterParams(obj){ let _newPar = {}; for (let key in obj) { if ((obj[key] === 0 || obj[key]) && obj[key].toString().replace(/(^s*)|(s*$)/g, "") !== "") { _newPar[key] = obj[key]; } } return _newPar; }5-3現(xiàn)金額大寫轉(zhuǎn)換函數(shù)//upDigit(168752632) //"人民幣壹億陸仟捌佰柒拾伍萬(wàn)貳仟陸佰叁拾貳元整" //upDigit(1682) //"人民幣壹仟陸佰捌拾貳元整" //upDigit(-1693) //"欠人民幣壹仟陸佰玖拾叁元整" function upDigit(n) { var fraction = ["角", "分","厘"]; var digit = ["零", "壹", "貳", "叁", "肆", "伍", "陸", "柒", "捌", "玖"]; var unit = [ ["元", "萬(wàn)", "億"], ["", "拾", "佰", "仟"] ]; var head = n < 0? "欠人民幣": "人民幣"; n = Math.abs(n); var s = ""; for (var i = 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 (var i = 0; i < unit[0].length && n > 0; i++) { var p = ""; for (var j = 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; } return head + s.replace(/(零.)*零元/, "元").replace(/(零.)+/g, "零").replace(/^整$/, "零元整"); }5-4獲取,設(shè)置url參數(shù)//獲取url參數(shù) //getUrlPrmt("segmentfault.com/write?draftId=122000011938") //Object{draftId: "122000011938"} function getUrlPrmt(url) { url = url ? url : window.location.href; let _pa = url.substring(url.indexOf("?") + 1), _arrS = _pa.split("&"), _rs = {}; for (let i = 0, _len = _arrS.length; i < _len; i++) { let pos = _arrS[i].indexOf("="); if (pos == -1) { continue; } let name = _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=2 function setUrlPrmt(obj) { let _rs = []; for (let p in obj) { if (obj[p] != null && obj[p] != "") { _rs.push(p + "=" + obj[p]) } } return _rs.join("&"); }5-5隨機(jī)返回一個(gè)范圍的數(shù)字function randomNumber(n1,n2){ //randomNumber(5,10) //返回5-10的隨機(jī)整數(shù),包括5,10 if(arguments.length===2){ return Math.round(n1+Math.random()*(n2-n1)); } //randomNumber(10) //返回0-10的隨機(jī)整數(shù),包括0,10 else if(arguments.length===1){ return Math.round(Math.random()*n1) } //randomNumber() //返回0-255的隨機(jī)整數(shù),包括0,255 else{ return Math.round(Math.random()*255) } }5-6隨進(jìn)產(chǎn)生顏色function randomColor(){ //randomNumber是上面定義的函數(shù) //寫法1 return "rgb(" + randomNumber(255) + "," + randomNumber(255) + "," + randomNumber(255) + ")"; //寫法2 return "#"+Math.random().toString(16).substring(2).substr(0,6); //寫法3 var color="#"; for(var i=0;i<6;i++){ color+="0123456789abcdef"[randomNumber(15)]; } return color; }//這種寫法,偶爾會(huì)有問(wèn)題。大家得注意哦
5-7Date日期時(shí)間部分
//Math.floor(Math.random()*0xffffff).toString(16);//到某一個(gè)時(shí)間的倒計(jì)時(shí) //getEndTime("2017/7/22 16:0:0") //"剩余時(shí)間6天 2小時(shí) 28 分鐘20 秒" function getEndTime(endTime){ var startDate=new Date(); //開(kāi)始時(shí)間,當(dāng)前時(shí)間 var endDate=new Date(endTime); //結(jié)束時(shí)間,需傳入時(shí)間參數(shù) var t=endDate.getTime()-startDate.getTime(); //時(shí)間差的毫秒數(shù) var d=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è)適配的方法很多,我就寫我自己用的方法。大家也可以去我回答過(guò)得一個(gè)問(wèn)題那里看更詳細(xì)的說(shuō)明!移動(dòng)端適配問(wèn)題
function getFontSize(){ var doc=document,win=window; var docEl = doc.documentElement, resizeEvt = "orientationchange" in window ? "orientationchange" : "resize", recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; //如果屏幕大于750(750是根據(jù)我效果圖設(shè)置的,具體數(shù)值參考效果圖),就設(shè)置clientWidth=750,防止font-size會(huì)超過(guò)100px if(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; //樣式寫法就是 img{ width:1rem; height:1rem; } //這樣的設(shè)置,比如在屏幕寬度大于等于750px設(shè)備上,1rem=100px;圖片顯示就是寬高都是100px //比如在iphone6(屏幕寬度:375)上,375/750*100=50px;就是1rem=50px;圖片顯示就是寬高都是50px;6.封裝成形寫了這么多的操作,小伙伴應(yīng)該發(fā)現(xiàn)了一問(wèn)題,全局函數(shù)太多了
//這樣的話,封裝了幾個(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ì)是 var myJS={ setUrlPrmt:function(obj){..}, getUrlPrmt:function(url){..}, upsetArr:function(arr){..}, } 這樣就算別人也寫這樣的函數(shù),也不會(huì)造成沖突。全局變量也只有一個(gè),加上別人也不會(huì)很多! var otherJS={ setUrlPrmt:function(obj){..}, getUrlPrmt:function(url){..}, upsetArr:function(arr){..}, } //最后,封裝的效果是 var myJS={ //去除字符串空格 trim:function(obj){..}, //字母大小寫切換 changeCase:function(obj){..}, //字符串循環(huán)復(fù)制 repeatStr:function(str){..}, ..... } //如果是es6的模塊化開(kāi)發(fā),大家也可以 let myJS={ //去除字符串空格 trim:function(obj){..}, //字母大小寫切換 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){ case 1:return this.replace(/s+/g,""); case 2:return this.replace(/(^s*)|(s*$)/g, ""); case 3:return this.replace(/(^s*)/g, ""); case 4:return this.replace(/(s*$)/g, ""); default:return this; } } //" 12345 6 8 96 ".trim(1) //"123456896" //比這樣trim(" 12345 6 8 96 ",1)調(diào)用方便。 //但是,這樣是不推薦的做法,這樣就污染了原生對(duì)象String,別人創(chuàng)建的String也會(huì)被污染,造成不必要的開(kāi)銷。 //更可怕的是,萬(wàn)一自己命名的跟原生的方法重名了,就被覆蓋原來(lái)的方法了 //String.prototype.substr=function(){console.log("asdasd")} //"asdasdwe46546".substr() //asdasd //substr方法有什么作用,大家應(yīng)該知道,不知道的可以去w3c看下所以在原生對(duì)象原型的修改很不推薦!至少很多的公司禁止這樣操作!
7.小結(jié)這篇文章,寫了很久了,幾個(gè)小時(shí)了,因?yàn)槲覍戇@篇文章,我也是重新改我以前代碼的,因?yàn)槲乙郧皩懙拇a,功能一樣,代碼比較多,現(xiàn)在是邊想邊改邊寫,還要自己測(cè)試(之前的代碼for循環(huán)很多,現(xiàn)在有很多簡(jiǎn)潔的寫法代替)。加上最近公司比較忙,所以這一篇文章也是花了幾天才整理完成。
源碼都放在github上了,大家想以后以后有什么修改或者增加的,歡迎大家來(lái)star一下ec-do。
我自己封裝這個(gè),并不是我有造輪子的習(xí)慣,而是:
1,都是一些常用,但是零散的小實(shí)例,網(wǎng)上基本沒(méi)有插件。
2,因?yàn)榱闵⒌男?shí)例,涉及到的有字符串,數(shù)組,對(duì)象等類型,就算找到插件,在項(xiàng)目引入的很有可能不止一個(gè)插件。
3.都是簡(jiǎn)單的代碼,封裝也不難。維護(hù)也簡(jiǎn)單。
廢話就不多說(shuō)了,上面的只是我自己在開(kāi)發(fā)中常用到,希望能幫到小伙伴們,最理想就是這篇文章能起到一個(gè)拋磚引玉的作用,就是說(shuō),如果覺(jué)得還有什么操作是常用的,或者覺(jué)得我哪里寫得不好的,也歡迎指出,讓大家相互幫助,相互學(xué)習(xí)。-------------------------華麗的分割線--------------------
想了解更多,關(guān)注關(guān)注我的微信公眾號(hào):守候書(shū)閣
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/84089.html
摘要:前言這個(gè)系列的上一篇文章編寫自己的代碼庫(kù)常用實(shí)例的實(shí)現(xiàn)與封裝總結(jié)了個(gè)常見(jiàn)的操作。前序修改以及寫法優(yōu)化此處修改之前提交函數(shù)已經(jīng)發(fā)現(xiàn)的,基于這個(gè)系列上篇文章的提供的函數(shù)。 1.前言 這個(gè)系列的上一篇文章(編寫自己的代碼庫(kù)(javascript常用實(shí)例的實(shí)現(xiàn)與封裝))總結(jié)了34個(gè)常見(jiàn)的操作。但是在開(kāi)發(fā)中,常見(jiàn)的實(shí)例又何止這么多個(gè),經(jīng)過(guò)這些日子的探索,以及他人的意見(jiàn),現(xiàn)在得追加一些操作實(shí)例了。...
摘要:前言月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議那么今天我就把看過(guò)的一些學(xué)習(xí)資源主要是博客,博文推薦分享給大家。 1.前言 6月份開(kāi)始出沒(méi)社區(qū),現(xiàn)在差不多9月了,按照工作的說(shuō)法,就是差不多過(guò)了三個(gè)月的試用期,準(zhǔn)備轉(zhuǎn)正了!一般來(lái)說(shuō),差不多到了轉(zhuǎn)正的時(shí)候,會(huì)進(jìn)行總結(jié)或者分享會(huì)議!那么今天我就...
摘要:創(chuàng)建基本庫(kù)首先創(chuàng)建一個(gè)基本庫(kù),名字叫做用于編寫最常用的代碼,然后不斷的擴(kuò)展封裝。 1、創(chuàng)建基本庫(kù) 首先創(chuàng)建一個(gè)基本庫(kù),名字叫做base.js,用于編寫最常用的代碼,然后不斷的擴(kuò)展封裝。在最常用的代碼中,最常用的就是獲取節(jié)點(diǎn)的方法。這里我們可以編寫代碼如下: //創(chuàng)建base.js //整個(gè)庫(kù)可以是一個(gè)對(duì)象 var Base={ //方法名盡可能簡(jiǎn)短而富有意義 getId...
摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開(kāi)發(fā)教程工程實(shí)踐深度閱讀開(kāi)源項(xiàng)目巔峰人生等欄目。它能夠?yàn)槲覀兲峁╊愃朴陬A(yù)處理器命名空間等多方面的輔助。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開(kāi)發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開(kāi)發(fā)教程、工程實(shí)踐、深度閱讀、開(kāi)源項(xiàng)目、巔峰人生等欄目。歡迎關(guān)注【前端之巔】微信公眾號(hào)(ID:f...
閱讀 1468·2023-04-26 00:10
閱讀 2569·2021-09-22 15:38
閱讀 4192·2021-09-22 15:13
閱讀 3660·2019-08-30 13:11
閱讀 742·2019-08-30 11:01
閱讀 3188·2019-08-29 14:20
閱讀 3307·2019-08-29 13:27
閱讀 1820·2019-08-29 11:33