概述
ECMAScript 提供了 3 個特殊的引用類型:Boolean() Number() String() ,以便於操作基本類型值。
創建
當創建基本包裝類型時,相對應的變量會有 proto 的屬性,此屬性是基本包裝類型指向 Object 類型的 prototype 。
Boolean()
API
- valueof() ==> 返回基本類型值 true 或 false (重寫)
- toString() ==> 返回字符串 ‘true’ 和 ‘false’ (重寫)
套路:
1 |
var f1 = false; |
Number()
API
- valueof() ==> 返回對象表示的基本類型的數值 (重寫)
- toString() ==> 返回字符串形式的數值 (重寫)
- toLocaleString() ==> 返回字符串形式的數值 (重寫)
- toFixed() ==> 按照指定的小數位返回數值的字符串表示,參數爲小數位數
- toExponential() ==> 返回以指數表示法表示的數值的字符串形式,參數爲指定輸出結果中的小數位數
- toPrecision() ==> 可能返回固定大小格式,也可能返回指數格式;具體規則看哪種格式更加合適,參數爲表示數值的所有數字的位數(不包括指數部分)。
String()
API
-
length ==> 屬性,表示字符串中包含多少個字符
-
valueof() ==> 返回對象所表示的基本字符串值
-
toLocaleString() ==> 返回對象所表示的基本字符串值
-
toString() ==> 返回對象所表示的基本字符串值
-
chatAt() ==> 以單字符字符串的形式返回給定位置的那個字符,參數爲指定位置
-
charCodeAt() ==> 以字符編碼的形式返回給定位置的那個字符,參數爲指定位置
-
concat() ==> 將一個或多個字符串拼接起來,返回拼接得到的新字符串,可以接受任意多個參數(實踐中可以使用加號操作符)
-
slice() ==> 返回被操作字符串的一個子字符串,接受一個或者兩個參數,第一個參數指定子字符串的開始位置,第二個參數(在指定的情況下)表示子字符串的結束位置,[ 開始位置,結束位置 )。如果第二參數未指定,一直到字符串的結束爲止。如果傳入的參數是負值,將傳入的負值與字符串的長度相加。
-
substr() ==> 返回被操作字符串的一個子字符串,接受一個或者兩個參數,第一個參數指定子字符串的開始位置,第二個參數(在指定的情況下)表示子字符串的結束位置,[ 開始位置,結束位置 )。如果第二參數未指定,一直到字符串的結束爲止。如果傳入的參數是負值,將負的第一個參數加上字符串的長度,將負的第二個參數轉換爲0。
-
substring() ==> 返回被操作字符串的一個子字符串,接受一個或者兩個參數,第一個參數指定子字符串的開始位置,第二個參數(在指定的情況下)表示子字符串返回的個數,[ 開始位置,個數 )。如果第二參數未指定,一直到字符串的結束爲止。如果傳入的參數是負值,將所有負值轉換爲0。
-
indexOf() ==> 在一個字符串中從前向後搜索給定的子字符串,返回子字符串的位置,如果沒有找到該位置,則返回 -1,接受一個或者兩個參數,第一個參數表示指定的字符串,第二個參數表示從字符串中的那個位置開始搜索。
-
lastIndexOf() ==> 在一個字符串中從後向前搜索給定的子字符串,返回子字符串的位置,如果沒有找到該位置,則返回 -1,接受一個或者兩個參數,第一個參數表示指定的字符串,第二個參數表示從字符串中的那個位置開始搜索。
-
trim() ==> 創建一個字符串的副本,刪除前置及後綴的所有空格,然後返回結果。
-
toLowerCase() ==> 字符串大小寫轉換
-
toLocaleLowerCase() ==> 字符串大小寫轉換
-
toUpperCase() ==> 字符串大小寫轉換
-
toLocalUpperCase() ==> 字符串大小寫轉換
-
match() ==> 在字符串中匹配模式,接受一個參數,正則或者 RegExp 對象。
-
search() ==> 在字符串中從前向後查找模式,返回字符串中第一個匹配項的索引,如果沒有找到匹配項,則返回 -1,接受一個參數,正則或者 RegExp 對象。
-
replace() ==> 替換子字符串,接受兩個參數,第一個參數可以是一個 RegExp 對象或者一個字符串,第二個參數可以是一個字符串或者一個函數
-
split() ==> 基於指定的分隔符將一個字符串分割成多個字符串,並將結果放在一個數組中,接受一個或兩個參數,第一個參數表示分隔符,第二個參數表示數組的長度。
當在讀取模式中訪問 Boolean Number 和 String 類型時,後臺會自動完成
- 創建相應的基本類型的一個實例 ( var temp = new 基本包裝類型; )
- 在實例上調用制定的方法 ( var 變量 = temp.方法; )
- 銷燬這個實例 ( temp = null; )
基本類型 和 基本包裝類型 區別
基本類型 和 基本包裝類型 區別在於存儲的路徑
-
基本類型存儲在 Stack(棧內存) 中
-
基本包裝類型在 Stack(棧內存) 存儲一個地址,之後對應在 Heap(堆內存) 中的一個對象,其中有很多方法,可以進行操作數據。
-
例子:
1
2var n1 = 1;
var n2 = new Number(1);兩者區別在於:
- n1 類型是 Number(基本數據類型) ,直接儲存在 Stack(棧內存) 中
- n2 類型是基本包裝類型,在 Stack(棧內存) 存儲一個地址,之後 對應在 Heap(堆內存) 中的一個對象,其中有很多方法,可以進行操作數據。
引用類型 和 基本包裝類型 區別
引用類型 和 基本包裝類型 區別在於對象的生存期
-
使用 new 操作符創建的引用類型的實例,在執行流離開當前作用域之前都一直保存在內存中
-
自動創建的基本包裝類型的對象,只存在與一行代碼的執行瞬間,然後立即被銷燬