第5章 引用類型---JS紅寶書書摘系列筆記

       在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():求平方根

相關文章
相關標籤/搜索