基本包裝類型


概述

ECMAScript 提供了 3 個特殊的引用類型:Boolean() Number() String() ,以便於操作基本類型值。

創建

當創建基本包裝類型時,相對應的變量會有 proto 的屬性,此屬性是基本包裝類型指向 Object 類型的 prototype 。
基本包裝類型

Boolean()

基本包裝類型 Boolean

API
  • valueof() ==> 返回基本類型值 true 或 false (重寫)
  • toString() ==> 返回字符串 ‘true’ 和 ‘false’ (重寫)

套路:

1
2
3
4
var f1 = false;
var f2 = new Boolean(false);
if(f1){console.log(1)} //不打印
if(f2){console.log(2)} //打印2,因爲在調用 f2 的時候,f2 對應的包裝類型是對象,所有的對象都是真值。

Number()

基本包裝類型 Number

API
  • valueof() ==> 返回對象表示的基本類型的數值 (重寫)
  • toString() ==> 返回字符串形式的數值 (重寫)
  • toLocaleString() ==> 返回字符串形式的數值 (重寫)
  • toFixed() ==> 按照指定的小數位返回數值的字符串表示,參數爲小數位數
  • toExponential() ==> 返回以指數表示法表示的數值的字符串形式,參數爲指定輸出結果中的小數位數
  • toPrecision() ==> 可能返回固定大小格式,也可能返回指數格式;具體規則看哪種格式更加合適,參數爲表示數值的所有數字的位數(不包括指數部分)。

String()

基本包裝類型 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 類型時,後臺會自動完成
  1. 創建相應的基本類型的一個實例 ( var temp = new 基本包裝類型; )
  2. 在實例上調用制定的方法 ( var 變量 = temp.方法; )
  3. 銷燬這個實例 ( temp = null; )

基本類型 和 基本包裝類型 區別

基本類型 和 基本包裝類型 區別在於存儲的路徑

  • 基本類型存儲在 Stack(棧內存) 中

  • 基本包裝類型在 Stack(棧內存) 存儲一個地址,之後對應在 Heap(堆內存) 中的一個對象,其中有很多方法,可以進行操作數據。

  • 例子:

    1
    2
    var n1 = 1;
    var n2 = new Number(1);

    兩者區別在於:

    • n1 類型是 Number(基本數據類型) ,直接儲存在 Stack(棧內存) 中
    • n2 類型是基本包裝類型,在 Stack(棧內存) 存儲一個地址,之後 對應在 Heap(堆內存) 中的一個對象,其中有很多方法,可以進行操作數據。

引用類型 和 基本包裝類型 區別

引用類型 和 基本包裝類型 區別在於對象的生存期

  • 使用 new 操作符創建的引用類型的實例,在執行流離開當前作用域之前都一直保存在內存中

  • 自動創建的基本包裝類型的對象,只存在與一行代碼的執行瞬間,然後立即被銷燬

© 2018 吳博文
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章