javascript框架設(shè)計(jì)讀書(shū)筆記之字符串的擴(kuò)展和修復(fù)
1.repeat方法:將一個(gè)字符串重復(fù)自身n次。比如:repeat("chaojidan",2) -> chaojidanchaojidan
方法1:
function repeat(str,n){
return Array.prototype.join.call({length:n+1},str);
//在類(lèi)數(shù)組{length:n+1}上下文下執(zhí)行join方法,并傳入str。也就是用str來(lái)分隔類(lèi)數(shù)組的選項(xiàng),類(lèi)數(shù)組是空,所以就有n個(gè)str分隔n+1個(gè)"",得到的結(jié)果就是n個(gè)str連接。
}
方法2:
function repeat(str,n){
var s = str ,total = "";
while(n>0){
//假設(shè)n是5,n%2后,等于1,因此total = str.s=strstr。n=2.第二次循環(huán):s=strstrstrstr,n=1.第三次循環(huán)total = strstrstrstrstr,break,跳出循環(huán),返回total,剛好是str重復(fù)了5次的字符串
if(n%2 ==1){
total + =s; //這里是2的0次方,也就是1,所有的正整數(shù),都可以使用1,2,4,8....進(jìn)行組合。比如:3=1+2,5=1+4,7=1+2+4.
}
if(n==1) break;
s+=s; //這里利用的是2的冪次方,2,4,8.....
n = n>>1;
}
return total ;
}
2.取字符串所有字節(jié)的長(zhǎng)度:str.charCodeAt(i) >255 就把str的長(zhǎng)度加一次就OK了.
3.轉(zhuǎn)換駝峰風(fēng)格:str.replace(/[-_][^-_]/g,function(match){return match.charAt(1).toUpperCase();})
//-_在[]中,不需要使用\,并且^在[]中是代表反的意思,就是遇到-a或_a,就被替換成A(match就是正則匹配的字符串_a,然后取a,并且大寫(xiě))
4.轉(zhuǎn)換為下劃線(xiàn)風(fēng)格:str.replace(/([a-z\d])([A-Z])/g,'$1_$2').replace(/\-/g,'_').toLowerCase();
//第一個(gè)replace,匹配cA,或者4A的字符串,然后用c_A或4_A替換。$1代表第一個(gè)子表達(dá)式。第二個(gè)replace就是使用_替換-。由于-不在[]中,所以需要加\。
5.去掉字符串中的html標(biāo)簽:str.replace(/<[^>]+>/g,''),這里面會(huì)把script標(biāo)簽去掉,但是不會(huì)去掉script中的js腳本
6.去掉script標(biāo)簽,并且移除里面的js腳本:str.replace(/<script[^>]*>(\S\s)*?)<\/script>/img,'')
/需要用\,防止轉(zhuǎn)義。
//(\S\s)*?)盡可能少的匹配,非貪婪匹配。舉個(gè)例子:<script>aaa</script>dddd<script>bbbb</script>,會(huì)先匹配<script>aaa</script>,再匹配<script>bbbb</script>,如果沒(méi)加?,將是貪婪匹配,將會(huì)把<script>aaa</script>dddd<script>bbbb</script>全部匹配掉,連字符串dddd都去掉了。
7.將字符串經(jīng)過(guò)html轉(zhuǎn)義,得到適合在頁(yè)面中顯示的內(nèi)容.
str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,''');
8.將字符串的html實(shí)體字符換成對(duì)應(yīng)字符:
跟7相反,只是多了一個(gè)replace(/&#([\d]+);/g,function($0,$1){ return String.fromCharCode(parseInt($1,10)) }) //$1就是第一個(gè)子表達(dá)式匹配項(xiàng)。
9.trim:str.replace(/^\s+ | \s+$/g,'') ,IE或早期的標(biāo)準(zhǔn)瀏覽器,把許多本屬于空白的字符沒(méi)有列為\s中,因此會(huì)有bug。不過(guò),又何必執(zhí)著兼容淘汰的瀏覽器呢。
- 十大熱門(mén)的JavaScript框架和庫(kù)
- 深入解析JavaScript框架Backbone.js中的事件機(jī)制
- JavaScript框架是什么?怎樣才能叫做框架?
- 超贊的動(dòng)手創(chuàng)建JavaScript框架的詳細(xì)教程
- javascript框架設(shè)計(jì)之類(lèi)工廠(chǎng)
- javascript框架設(shè)計(jì)之瀏覽器的嗅探和特征偵測(cè)
- javascript框架設(shè)計(jì)之種子模塊
- javascript框架設(shè)計(jì)之框架分類(lèi)及主要功能
- 2014 年最熱門(mén)的21款JavaScript框架推薦
- javascript框架設(shè)計(jì)讀書(shū)筆記之?dāng)?shù)組的擴(kuò)展與修復(fù)
- javascript框架設(shè)計(jì)讀書(shū)筆記之模塊加載系統(tǒng)
- javascript框架設(shè)計(jì)讀書(shū)筆記之種子模塊
- JavaScript框架(iframe)操作總結(jié)
- 怎么選擇Javascript框架(Javascript Framework)
- 詳細(xì)介紹8款超實(shí)用JavaScript框架
- brook javascript框架介紹
- 16個(gè)最流行的JavaScript框架[推薦]
- 如何選擇適合你的JavaScript框架
相關(guān)文章
js左側(cè)多級(jí)菜單動(dòng)態(tài)的解決方案
實(shí)現(xiàn)的效果很簡(jiǎn)單,就是點(diǎn)一下顯示,再點(diǎn)一下就隱藏,只不過(guò)是多了幾級(jí)的問(wèn)題。好,現(xiàn)在來(lái)說(shuō)說(shuō)我的設(shè)計(jì)思路,首先從第一級(jí)別開(kāi)始,添加如下代碼2010-02-02詳解JavaScript中關(guān)于this指向的4種情況
這篇文章主要介紹了JavaScript中關(guān)于this指向的4種情況,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04使用JavaScript實(shí)現(xiàn)一個(gè)交互式音樂(lè)播放器
JavaScript,作為前端開(kāi)發(fā)的重要語(yǔ)言,可以實(shí)現(xiàn)許多復(fù)雜的功能,在這篇文章中,我們將一起創(chuàng)建一個(gè)交互式的音樂(lè)播放器,快跟隨小編一起學(xué)習(xí)一下吧2024-01-01通過(guò)JS運(yùn)行機(jī)制的角度說(shuō)說(shuō)作用域
這篇文章主要給大家介紹了如何通過(guò)JS運(yùn)行機(jī)制的角度說(shuō)說(shuō)作用域的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用JS作用域具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03