摘要:的內置函數整理了一些語言精粹的方法一章的整理出的的內置方法之后還會整理標準入門的新添加的方法整理這些作用一方面是更好的理解記憶另一方面是對于類數組可以使用原型鏈的調用即可中的一些函數輸出的為的結果因此的作用是連接數組當然可以是數字也會加入到
Javascript的內置函數(ES5)
整理了一些Javascript語言精粹的方法一章的整理出的ES5的內置方法;
之后還會整理"ES6標準入門"的新添加的ES6方法;
整理這些作用一方面是更好的理解記憶,另一方面是對于類數組arguments,可以使用原型鏈的調用(Array.prototype.call(...))即可;
ES5中的一些函數 Array>var a = [1,2,3]; > >b = a.concat([4,5,6]);
輸出的b為a+b的結果[1,2,3,4,5,6];因此array.concat的作用是連接數組,當然item可以是數字也會加入到里面;
作用是把一個數組變成一個字符串,中間使用separator連接;
>var a = [1,2,3]; > >b = a.join(""); //b = "123" > >c = a.join(","); //c = "1,2,3" >
數組的標準操作,大概的思路是返回和添加一個元素到最后一個;
然后push返回的是加入之后的數組長度;pop返回的是數組的被踢出的值;
共同的特性就是都會改變數組原來的數值;
數組原地逆轉,然后返回這個逆轉的數組;
移除數組頭元素,并且返回,速度并沒有pop快;
把數組加到頭元素,返回新的數組的長度;
類似于python的切片;返回的是淺復制的數組
從start的點開始刪除deleteCount個數的元素,然后再這個地點加入item元素;返回刪除的元素
>var a= [1,2,3]; > >var b = a.splice(1,2,[1,2,3]) // a = [1,[1,2,3]]; b = [2,3]
如果不加入comparafn的情況下,sort函數會按照字符串的形式來排序;
> a = [1,22,33,12,112] [ 1, 22, 33, 12, 112 ] > a.sort() [ 1, 112, 12, 22, 33 ]
因此我們在使用sort函數的時候,我們應該使用comparefn;下面說下這個函數的作用機制:
比較函數comparefn接受兩個參數:a,b;
然后comparefn會返回一個數值,如果返回的值大于0,那么就調換順序,如果小于0,那么就不會調換順序;
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] 因為依此遍歷b-a,然后大于0就調換位置;
然后語言精粹里面加入了更加復雜的一些比較函數:
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",會讓number在前面 return typeof a < typeof b? -1:1; }); // m為 4,8,15,16,23,42,a,aa,bb
然后繼續拓展一個更加高級的比較方法,用來比較對象里面的屬性的排序:
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如果還需要比較第二個last的排序,那么可以繼續拓展,改變上面如果a===b的時候排序方法:
var by = function(name,minor,direction){ .....//不變的部分 if(a===b){ return typeof minor ==="function"? minor(o,p):0; } .....//不變 } //相當于遞歸了一次調用方法是 s.sort(by("first",by("last"),-1));當然我也在這里碰到了一個問題
//如果只是調用一次排序函數,那么這樣是沒問題的 s.sort(by("first",-1)); //如果兩個同時調用: s.sort(by("first",1)); s.sort(by("first",-1)); //返回的對象的排序方式是一模一樣的; //所以這樣的話,也就是第二個方法其實并沒有奏效; //查了下似乎是回調機制問題,以后再研究;function1.function.apply(thisArg,argArray);
其實call和apply很像,call只是apply的語法糖寫法;
apply的作用還是顯式的綁定this到函數上面;
詳細的可見你不知道的Javascript上冊
Object1.object.hasOwnProperty(name)
最有用的地方就是遍歷對象的屬性了
Number1.number.toExponential(fractionDigits)
轉化為字符串,用指數形式表示,并且選擇保留小數點后幾位的問題
> 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)
轉化為字符串,并且選擇保留小數點后幾位的問題
> Math.PI.toFixed(2) "3.14" > Math.PI.toFixed(3) "3.142"3.number.toString(radix)
數字轉化為字符串,radix是控制多少進制
> Math.PI.toString() "3.141592653589793" > Math.PI.toString(2) "11.001001000011111101101010100010001000010110100011" > Math.PI.toString(8) "3.1103755242102643"String1.string.indexOf(searchString,position)
尋找string里面的字符串里面的字符串,而且從position的位置開始;沒找到返回-1
> var text = "Mississippi" > text.indexOf("ss") 2 > text.indexOf("ss",2) 2 > text.indexOf("ss",3) 5 > text.indexOf("ss",6) -12.string.match(regexp)
和正則表達式匹配..以后再更新
3.string.replace(searchValue,replaceValue)
replace方法對string進行查找和替換操作,并且返回一個新的字符串;
searchValue可以是正則表達式,如果searchvalue是普通的字符串,那么只會替換第一個
> text "Mississippi" > text.replace("ss","SS") "MiSSissippi" > text "Mississippi" > text.replace("ss","SS").replace("ss","SS") "MiSSiSSippi"下面是和正則表達式的匹配:
4.string.search(regexp)
string的search方法和indexOf方法很相似,但是只能接受正則表達式對象;
5.string.slice(start,end)
復制string的一個部分來構造新的字符串,這個方法和array.slice()很類似;
> text "Mississippi" > text.slice(1) "ississippi" > text.slice(1,3) //end - start 的個數差是需要書要輸出的個數 "is"6.string.split(separator,limit)
把字符串用separator分解成為一個數組,然后這個separator可以是正則表達式對象,
limits表示了這里需要多少個;> 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()
兩個方法分別返回一個新的字符串,string被轉化成為大寫和小寫的格式
參考資料JavaScript語言精粹
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91345.html
摘要:前言今天和大家一起聊聊的推薦書籍,每一本都是精選,做前端開發的朋友們如果沒讀過,可以嘗試一下。如果怕麻煩,也可以關注曉舟報告,發送獲取書籍,四個字,就可以得到電子書的提取碼。 前言 今天和大家一起聊聊JavaScript的推薦書籍,每一本都是精選,做前端開發的朋友們如果沒讀過,可以嘗試一下。下面給大家簡單介紹了書的內容,還有讀書的方法,希望可以幫大家提升讀書效率。 一、《JavaScr...
摘要:在有了基礎之后,進一步學習內容包括框架。前端學習交流群禁止閑聊,非喜勿進。代碼提交前必須做的三個事情檢查所有變更跑一邊單元測試手動運行一遍所有 網站開發開發大致分為前端和后端,前端主要負責實現視覺和交互效果,以及與服務器通信,完成業務邏輯。其核心價值在于對用戶體驗的追求。可以按如下思路學習系統學習: 基礎知識: html + css 這部分建議在?w3school 在線教程上學習,邊...
摘要:在有了基礎之后,進一步學習內容包括框架。前端學習交流群禁止閑聊,非喜勿進。代碼提交前必須做的三個事情檢查所有變更跑一邊單元測試手動運行一遍所有 網站開發開發大致分為前端和后端,前端主要負責實現視覺和交互效果,以及與服務器通信,完成業務邏輯。其核心價值在于對用戶體驗的追求。可以按如下思路學習系統學習: 基礎知識: html + css 這部分建議在?w3school 在線教程上學習,邊...
摘要:于是我就先把這本薄的經典書語言精粹修訂版豆瓣讀書本書簡介總共章,除去附錄,才頁,讀完并記錄了一些筆記。讀書筆記還可以分享給別人看。編程語言第版定義了的標準。程序檢查時丟棄值為函數的屬性。 之前看到這篇文章,前端網老姚淺談:怎么學JavaScript?,說到怎么學習JavaScript,那就是看書、分析源碼。10本書讀2遍的好處,應該大于一本書讀20遍。看書主動學習,看視頻是被動學習。看...
摘要:最近在讀語言精粹這本書,作者是是一名來自的資深架構師,以創建和維護格式而為大家所熟知。三元運算符有三個運算數。嘗試從的成員屬性中取值將會導致異常。這個過程稱為委托。通過可取得它們所屬對象的上下文的方法稱為公共方法。 最近在讀《JavaScript語言精粹》這本書,作者是 Douglas Crockford;Douglas Crockford是一名來自 Yahoo!的資深JavaScri...
閱讀 3374·2021-11-04 16:10
閱讀 3874·2021-09-29 09:43
閱讀 2709·2021-09-24 10:24
閱讀 3378·2021-09-01 10:46
閱讀 2521·2019-08-30 15:54
閱讀 602·2019-08-30 13:19
閱讀 3247·2019-08-29 17:19
閱讀 1068·2019-08-29 16:40