在ECMAScript中,引用類型是一種數據結構,用於將數據和功能組織在一塊兒,描述的是一類對象所具備的屬性和方法。而對象是某個特定引用類型的實例。html
1、Object類型正則表達式
能夠經過Object構造函數建立一個建立Object實例,但經常使用方式是使用對象字面量表示法,這種方式能夠簡化建立包含大量屬性的對象的過程,須要注意的是數值屬性名會自動轉換爲字符串。數組
訪問對象屬性有兩種方法:點表示法和方括號表示法。方括號的優勢體如今1.能夠經過變量來訪問屬性、2.若是屬性名包括致使語法錯誤的字符或者保留字以及關鍵字,點表示法不太合適。可是通常建議使用點表示法訪問對象的屬性。瀏覽器
2、Array類型數據結構
ECMAScript數組的每一項能夠保存任何類型的數據,並且數組的大小是能夠動態調整的,便可以隨着數據的添加自動增加以容納新的數據。app
同Object類型能夠經過Object構造函數建立一個Object對象實例,咱們也能夠經過Array構造函數建立數組。也能夠經過數組字面量表示法建立。dom
訪問數組的元素時能夠經過索引訪問,索引從0開始。若是要改變數組的元素也能夠經過索引設置。經過數組的length屬性能夠動態改變數組的大小。數組的最大長度是2的32次方-1.函數
檢測數組的方法:Array.isArray(value)。學習
1.轉換方法this
數組繼承的toLocaleString()、toString()、valueOf()方法,在默認狀況下都會以逗號分隔的字符返回全部數組的元素。alert數組名也能夠輸出數組的全部的數組項,可是這一操做仍是調用了數組的toString()方法。
數組的join()方法重現了toString()方法,可是它還能夠改變分隔符。
2.棧方法
pop()方法:移出數組的最後一項,返回刪除項
push()方法:添加某變量到數組的末尾,返回新數組的長度
3.隊列方法
shift()方法:移出數組的第一項,返回刪除項
unshift()方法:添加某變量到數組的開頭,返回新數組的長度
4.重排序方法
reverse()方法:將數組反序
sort()方法:按升序排列數組項,(機制是調用每一個數組項的toString()方法,而後比較進行排序),此方法能夠接收一個函數(稱爲比較函數),比較函數能夠經過一個<0、>0或者=0的值來影響排序的結果。
上述兩種方法均返回新數組。
5.操做方法
concat()方法:基於當前數組的全部項建立一個新數組,此外,這個方法還能夠用於引用類型數組類型的深拷貝,就是拷貝後的數組與原來的數組徹底獨立。
slice()方法:可以基於當前數組中的一或多個項建立一個新數組,其操做不影響原數組。接收兩個參數,表示起始和結束(不包括結束位置的項),若參數爲一個,則結束默認到數組最後一位。該方法主要用於向數組的中部插入項,同時也能夠利用此方法對數組 進行刪除、插入或者替換等操做。
splice()方法:用於截取數組,返回一個截取下來的數組。這個方法會改變原數組。
6.位置方法
indexOf()和lastIndexOf()方法,查找時是使用全等操做符比較。
7.迭代方法
ECMAScript5定義了5種迭代方法,且這5種方法不會改變原數組。
every():對數組的每一項運行函數,若是該函數對每一項都返回true,則該方法返回true。
filter():對數組中的每一項運行函數,返回由該函數會返回true的項組成的數組。
forEach:本質上與使用for循環迭代數組同樣,沒有返回值。
map:對數組中的每一項運行函數,返回由函數返回結果組成的數組。
some:對數組中的每一項運行函數,若函數對任意一項返回true,則返回true。
8.歸併方法
reduce()方法和reduceRight()方法,迭代數組,接收四個參數:前一項、後一項、索引、數組對象
3、Date類型
日期類型在實際生產開發中很經常使用。mark幾個概念。默認從1970年1月1日零時開始計算。
Date.parse()方法:接收一個表示日期的字符串參數,返回該日期到默認的毫秒數
Date.UTC()方法:返回結果同Date.parse()方法,它接收的參數分別是年月日時分秒毫秒,年月是必須的參數。
Date.now()方法:返回表示調用這個方法時的日期和時間的毫秒數。若是瀏覽器不支持該方法,能夠利用+操做符,即+Date.now()
關於Date類型的方法,書上介紹很詳細,有不少,能夠參考JS紅寶書P100-P102
4、RegExp類型
即正則表達式、俗稱火星文。初學JS,我是拒絕學習這個的,可是實際開發中,因爲數據的複雜性,也遇到不少須要利用正則的地方。
模式+標誌:模式由元字符組成,包括:([{\^$|)?*+.]} 標誌包括:g(全局)、i(不區分大小寫)、m(多行模式)
5、Function類型
JS中每一個函數都是Function類型的實例,做爲引用類型一樣具備屬性和方法。函數名能夠看作是一個指向函數對象的指針。注意:使用不帶圓括號的函數名是訪問函數指針,而非調用函數。
1.函數聲明與函數表達式
解析器在向執行環境中加載數據時,會率先讀取函數聲明,並使其在執行任何代碼以前能夠訪問。而對於函數表達式,則必須等到解析器執行到函數表達式所在的位置,它纔會被解釋執行。
2.函數做爲值
在JS中,函數名自己是變量,所以,函數能夠做爲值使用。這一點在回調函數callBack中常用到。
3.函數內部屬性
arguments:類數組對象,包含傳入函數中的全部參數,其屬性callee是一個指針,指向包含這個arguments對象的函數。
this:它引用的是函數據以執行的環境對象。
caller:保存着調用當前函數的函數的引用,若是是在全局做用域中調用當前函數,則其值爲null。另外,其不能被賦值。
4.函數屬性和方法
length:表示函數但願接收的命名參數的個數。
prototype:保存ECMAScript中引用類型的全部實例方法。
函數的方法主要包括apply()和call(),它們兩者的區別就是傳參的方式不一樣。前者接收一個運行函數的做用域和一個參數數組;後者的第二個參數則須要注意列舉參數。它們的主要做用是改變函數賴以運行的做用域。
6、基本包裝類型
基本包裝類型的存在乎義就是爲了便於操做基本類型值,在ECMAScript中,基本包裝類型主要包括:Boolean、Number、String。
引用類型和基本包裝類型的主要區別是對象的生存期不一樣。因爲這個區別,不能給基本包裝類型值添加屬性和方法。
1.Number類型
toFixed():指定保留幾位小數
toExponential():指數表示法
toPrecision():指定有效數字的位數
2.String類型
鑑於String類型的許多方法與Array類型的方法有不少類似的,因此就不詳細介紹了,前面也有一篇關於JS字符串方法的概括總結:JS字符串方法
7、單體內置對象
(1)Global對象
不屬於任何其餘對象的屬性和方法,最終都屬於它的屬性和方法。
1.URI編碼方法
encodeURI():主要用於整個URI,只對空格進行編碼替換
encodeURIComponent():主要用於對URI中的某一片斷進行編碼,對全部非字母數字字符進行編碼替換
對應的解碼方法:decodeURI()和decodeURIComponent()
2.eval()方法
eval()方法不推薦使用,由於容易引發惡意用戶的代碼注入。lue。
3.Global對象的屬性
見JS紅寶書P133表格
4.window對象
全局對象以訪問window對象實現。
(2)Math對象
Math對象的方法十分強大和實用。
經常使用的以下:
min()和max()方法:肯定一組數值中的最小值和最大值
Math.ceil():向上舍入
Math.floor():向下舍入
Math.round():四捨五入
Math.random():返回大於等於0小於1的一個隨機數。求區間[min,max]的隨機數:Math.random()*max+min
Math.abs():返回絕對值
Math.sqrt():求平方根