成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript的內(nèi)置函數(shù)(ES5)-讀Javascript語(yǔ)言精粹

gekylin / 729人閱讀

摘要:的內(nèi)置函數(shù)整理了一些語(yǔ)言精粹的方法一章的整理出的的內(nèi)置方法之后還會(huì)整理標(biāo)準(zhǔn)入門的新添加的方法整理這些作用一方面是更好的理解記憶另一方面是對(duì)于類數(shù)組可以使用原型鏈的調(diào)用即可中的一些函數(shù)輸出的為的結(jié)果因此的作用是連接數(shù)組當(dāng)然可以是數(shù)字也會(huì)加入到

Javascript的內(nèi)置函數(shù)(ES5)

整理了一些Javascript語(yǔ)言精粹的方法一章的整理出的ES5的內(nèi)置方法;

之后還會(huì)整理"ES6標(biāo)準(zhǔn)入門"的新添加的ES6方法;

整理這些作用一方面是更好的理解記憶,另一方面是對(duì)于類數(shù)組arguments,可以使用原型鏈的調(diào)用(Array.prototype.call(...))即可;

ES5中的一些函數(shù) Array
1.array.concat(item....)
>var a = [1,2,3];
>
>b = a.concat([4,5,6]);

輸出的b為a+b的結(jié)果[1,2,3,4,5,6];因此array.concat的作用是連接數(shù)組,當(dāng)然item可以是數(shù)字也會(huì)加入到里面;

2.array.join(separator)

作用是把一個(gè)數(shù)組變成一個(gè)字符串,中間使用separator連接;

>var a = [1,2,3];
>
>b = a.join(""); //b = "123"
>
>c = a.join(","); //c = "1,2,3"
>
3.array.pop() && array.push()

數(shù)組的標(biāo)準(zhǔn)操作,大概的思路是返回和添加一個(gè)元素到最后一個(gè);

然后push返回的是加入之后的數(shù)組長(zhǎng)度;pop返回的是數(shù)組的被踢出的值;

共同的特性就是都會(huì)改變數(shù)組原來(lái)的數(shù)值;

4.array.reverse();

數(shù)組原地逆轉(zhuǎn),然后返回這個(gè)逆轉(zhuǎn)的數(shù)組;

5.array.shift();

移除數(shù)組頭元素,并且返回,速度并沒(méi)有pop快;

6.array.unshift();

把數(shù)組加到頭元素,返回新的數(shù)組的長(zhǎng)度;

7.array.slice(start,end);

類似于python的切片;返回的是淺復(fù)制的數(shù)組

8.array.splice(start,deleteCount,item..)

從start的點(diǎn)開(kāi)始刪除deleteCount個(gè)數(shù)的元素,然后再這個(gè)地點(diǎn)加入item元素;返回刪除的元素

>var a= [1,2,3];
>
>var b = a.splice(1,2,[1,2,3]) // a = [1,[1,2,3]]; b = [2,3]
9.array.sort(comparefn);

如果不加入comparafn的情況下,sort函數(shù)會(huì)按照字符串的形式來(lái)排序;

> a = [1,22,33,12,112]
[ 1, 22, 33, 12, 112 ]
> a.sort()
[ 1, 112, 12, 22, 33 ]

因此我們?cè)谑褂胹ort函數(shù)的時(shí)候,我們應(yīng)該使用comparefn;下面說(shuō)下這個(gè)函數(shù)的作用機(jī)制:

比較函數(shù)comparefn接受兩個(gè)參數(shù):a,b;

然后comparefn會(huì)返回一個(gè)數(shù)值,如果返回的值大于0,那么就調(diào)換順序,如果小于0,那么就不會(huì)調(diào)換順序;

aList = [1,2,3];
ab = function(a,b){return a-b};
ba = function(a,b){return b-a};

aList.sort(ab); //[1,2,3]
aList.sort(ba);    //[3,2,1] 因?yàn)橐来吮闅vb-a,然后大于0就調(diào)換位置;

然后語(yǔ)言精粹里面加入了更加復(fù)雜的一些比較函數(shù):

var m = ["aa","bb","a",4,8,15,16,23,42];
m.sort(function(a,b){
    if(a===b){ 
        return 0;
    }
    if(typeof a ===typeof b){
        return a < b? -1:1;
    }
    
    //"string" > "number",會(huì)讓number在前面
    return typeof a < typeof b? -1:1;
});


// m為 4,8,15,16,23,42,a,aa,bb

然后繼續(xù)拓展一個(gè)更加高級(jí)的比較方法,用來(lái)比較對(duì)象里面的屬性的排序:

var s = [
    {first:"Joe",last:"Besser"},
    {first:"Moe",last:"Howard"},
    {first:"Joe",last:"Derita"},
    {first:"Curly",last:"Howard"},
    {first:12,last:"Howard"}

];

//這里的direction為 1或者-1.其中-1為正序(升高排列);
var by = function(name,direction){
    return function(o,p){
        var a,b;
        //下面是為了首先判斷是object,而且不是null;
        if(typeof o === "object" && typeof p ==="object" && o&& p){
            a =o[name];
            b = p[name];
            if( a=== b){
                return 0;
            }
            if(typeof a === typeof b){
                return a

如果還需要比較第二個(gè)last的排序,那么可以繼續(xù)拓展,改變上面如果a===b的時(shí)候排序方法:

var by = function(name,minor,direction){
    .....//不變的部分
    if(a===b){
        return typeof minor ==="function"? minor(o,p):0;
    }
    .....//不變
}


//相當(dāng)于遞歸了一次調(diào)用方法是
s.sort(by("first",by("last"),-1));

當(dāng)然我也在這里碰到了一個(gè)問(wèn)題

//如果只是調(diào)用一次排序函數(shù),那么這樣是沒(méi)問(wèn)題的
s.sort(by("first",-1));
//如果兩個(gè)同時(shí)調(diào)用:
s.sort(by("first",1));
s.sort(by("first",-1));
//返回的對(duì)象的排序方式是一模一樣的;
//所以這樣的話,也就是第二個(gè)方法其實(shí)并沒(méi)有奏效;
//查了下似乎是回調(diào)機(jī)制問(wèn)題,以后再研究;
function
1.function.apply(thisArg,argArray);

其實(shí)call和apply很像,call只是apply的語(yǔ)法糖寫法;

apply的作用還是顯式的綁定this到函數(shù)上面;

詳細(xì)的可見(jiàn)你不知道的Javascript上冊(cè)

Object
1.object.hasOwnProperty(name)

最有用的地方就是遍歷對(duì)象的屬性了

Number
1.number.toExponential(fractionDigits)

轉(zhuǎn)化為字符串,用指數(shù)形式表示,并且選擇保留小數(shù)點(diǎn)后幾位的問(wèn)題

> Math.PI.toExponential(2)
"3.14e+0"
> Math.PI.toExponential(3)
"3.142e+0"
> Math.PI.toExponential(5)
"3.14159e+0"
2.number.toFixed(fractionDigits)

轉(zhuǎn)化為字符串,并且選擇保留小數(shù)點(diǎn)后幾位的問(wèn)題

> Math.PI.toFixed(2)
"3.14"
> Math.PI.toFixed(3)
"3.142"
3.number.toString(radix)

數(shù)字轉(zhuǎn)化為字符串,radix是控制多少進(jìn)制

> Math.PI.toString()
"3.141592653589793"
> Math.PI.toString(2)
"11.001001000011111101101010100010001000010110100011"
> Math.PI.toString(8)
"3.1103755242102643"
String
1.string.indexOf(searchString,position)

尋找string里面的字符串里面的字符串,而且從position的位置開(kāi)始;沒(méi)找到返回-1

> var text = "Mississippi"
> text.indexOf("ss")
2
> text.indexOf("ss",2)
2
> text.indexOf("ss",3)
5
> text.indexOf("ss",6)
-1
2.string.match(regexp)

和正則表達(dá)式匹配..以后再更新

3.string.replace(searchValue,replaceValue)

replace方法對(duì)string進(jìn)行查找和替換操作,并且返回一個(gè)新的字符串;

searchValue可以是正則表達(dá)式,如果searchvalue是普通的字符串,那么只會(huì)替換第一個(gè)

> text
"Mississippi"
> text.replace("ss","SS")
"MiSSissippi"
> text
"Mississippi"
> text.replace("ss","SS").replace("ss","SS")
"MiSSiSSippi"

下面是和正則表達(dá)式的匹配:

4.string.search(regexp)

string的search方法和indexOf方法很相似,但是只能接受正則表達(dá)式對(duì)象;

5.string.slice(start,end)

復(fù)制string的一個(gè)部分來(lái)構(gòu)造新的字符串,這個(gè)方法和array.slice()很類似;

> text
"Mississippi"
> text.slice(1)
"ississippi"
> text.slice(1,3) //end - start 的個(gè)數(shù)差是需要書(shū)要輸出的個(gè)數(shù)
"is"
6.string.split(separator,limit)

把字符串用separator分解成為一個(gè)數(shù)組,然后這個(gè)separator可以是正則表達(dá)式對(duì)象,
limits表示了這里需要多少個(gè);

> a = "123456789"
"123456789"
> a.split("")
[ "1", "2", "3", "4", "5", "6", "7", "8", "9" ]
> a.split("",5)
[ "1", "2", "3", "4", "5" ]

> f = "a|b|c|"
"a|b|c|"
> f.split(/|/)
[ "a", "b", "c", "" ]
7.string.toLowerCase()/toUpperCase()

兩個(gè)方法分別返回一個(gè)新的字符串,string被轉(zhuǎn)化成為大寫和小寫的格式

參考資料

JavaScript語(yǔ)言精粹

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91345.html

相關(guān)文章

  • JavaScript書(shū)籍測(cè)評(píng)

    摘要:前言今天和大家一起聊聊的推薦書(shū)籍,每一本都是精選,做前端開(kāi)發(fā)的朋友們?nèi)绻麤](méi)讀過(guò),可以嘗試一下。如果怕麻煩,也可以關(guān)注曉舟報(bào)告,發(fā)送獲取書(shū)籍,四個(gè)字,就可以得到電子書(shū)的提取碼。 前言 今天和大家一起聊聊JavaScript的推薦書(shū)籍,每一本都是精選,做前端開(kāi)發(fā)的朋友們?nèi)绻麤](méi)讀過(guò),可以嘗試一下。下面給大家簡(jiǎn)單介紹了書(shū)的內(nèi)容,還有讀書(shū)的方法,希望可以幫大家提升讀書(shū)效率。 一、《JavaScr...

    X1nFLY 評(píng)論0 收藏0
  • 零基礎(chǔ)前端開(kāi)發(fā)初學(xué)者應(yīng)如何系統(tǒng)地學(xué)習(xí)?

    摘要:在有了基礎(chǔ)之后,進(jìn)一步學(xué)習(xí)內(nèi)容包括框架。前端學(xué)習(xí)交流群禁止閑聊,非喜勿進(jìn)。代碼提交前必須做的三個(gè)事情檢查所有變更跑一邊單元測(cè)試手動(dòng)運(yùn)行一遍所有 網(wǎng)站開(kāi)發(fā)開(kāi)發(fā)大致分為前端和后端,前端主要負(fù)責(zé)實(shí)現(xiàn)視覺(jué)和交互效果,以及與服務(wù)器通信,完成業(yè)務(wù)邏輯。其核心價(jià)值在于對(duì)用戶體驗(yàn)的追求??梢园慈缦滤悸穼W(xué)習(xí)系統(tǒng)學(xué)習(xí): 基礎(chǔ)知識(shí): html + css 這部分建議在?w3school 在線教程上學(xué)習(xí),邊...

    JouyPub 評(píng)論0 收藏0
  • 零基礎(chǔ)前端開(kāi)發(fā)初學(xué)者應(yīng)如何系統(tǒng)地學(xué)習(xí)?

    摘要:在有了基礎(chǔ)之后,進(jìn)一步學(xué)習(xí)內(nèi)容包括框架。前端學(xué)習(xí)交流群禁止閑聊,非喜勿進(jìn)。代碼提交前必須做的三個(gè)事情檢查所有變更跑一邊單元測(cè)試手動(dòng)運(yùn)行一遍所有 網(wǎng)站開(kāi)發(fā)開(kāi)發(fā)大致分為前端和后端,前端主要負(fù)責(zé)實(shí)現(xiàn)視覺(jué)和交互效果,以及與服務(wù)器通信,完成業(yè)務(wù)邏輯。其核心價(jià)值在于對(duì)用戶體驗(yàn)的追求??梢园慈缦滤悸穼W(xué)習(xí)系統(tǒng)學(xué)習(xí): 基礎(chǔ)知識(shí): html + css 這部分建議在?w3school 在線教程上學(xué)習(xí),邊...

    funnyZhang 評(píng)論0 收藏0
  • JavaScript語(yǔ)言精粹 修訂版》 書(shū)筆記

    摘要:于是我就先把這本薄的經(jīng)典書(shū)語(yǔ)言精粹修訂版豆瓣讀書(shū)本書(shū)簡(jiǎn)介總共章,除去附錄,才頁(yè),讀完并記錄了一些筆記。讀書(shū)筆記還可以分享給別人看。編程語(yǔ)言第版定義了的標(biāo)準(zhǔn)。程序檢查時(shí)丟棄值為函數(shù)的屬性。 之前看到這篇文章,前端網(wǎng)老姚淺談:怎么學(xué)JavaScript?,說(shuō)到怎么學(xué)習(xí)JavaScript,那就是看書(shū)、分析源碼。10本書(shū)讀2遍的好處,應(yīng)該大于一本書(shū)讀20遍??磿?shū)主動(dòng)學(xué)習(xí),看視頻是被動(dòng)學(xué)習(xí)???..

    EscapedDog 評(píng)論0 收藏0
  • JavaScript語(yǔ)言精粹》內(nèi)容精選

    摘要:最近在讀語(yǔ)言精粹這本書(shū),作者是是一名來(lái)自的資深架構(gòu)師,以創(chuàng)建和維護(hù)格式而為大家所熟知。三元運(yùn)算符有三個(gè)運(yùn)算數(shù)。嘗試從的成員屬性中取值將會(huì)導(dǎo)致異常。這個(gè)過(guò)程稱為委托。通過(guò)可取得它們所屬對(duì)象的上下文的方法稱為公共方法。 最近在讀《JavaScript語(yǔ)言精粹》這本書(shū),作者是 Douglas Crockford;Douglas Crockford是一名來(lái)自 Yahoo!的資深JavaScri...

    SimonMa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<