裝箱拆箱操作


裝箱:就是把基本類型轉變為對應的對象。裝箱分為隱式和顯示
  • 隱式裝箱: 每當讀取一個基本類型的值時,后台會創建一個該基本類型所對應的對象。在這個基本類型上調用方法,其實是在這個基本類型對象上調用方法。這個基本類型的對象是臨時的,它只存在於方法調用那一行代碼執行的瞬間,執行方法后立刻被銷毀。
let num=123;
num.toFixed(2); // '123.00'//上方代碼在后台的真正步驟為
var c = new Number(123);
c.toFixed(2);
c = null;

 

(1)創建一個 Number 類型的實例。
(2)在實例上調用方法。
(3)銷毀實例。
 
顯式裝箱: 通過內置對象 Boolean、Object、String 等可以對基本類型進行顯示裝箱。
  var obj = new String('123');

 

拆箱
拆箱與裝箱相反,把對象轉變為基本類型的值。拆箱過程內部調用了抽象操作 ToPrimitive 。該操作接受兩個參數,第一個參數是要轉變的對象,第二個參數 PreferredType 是對象被期待轉成的類型。第二個參數不是必須的,默認該參數為 number,即對象被期待轉為數字類型
 
  • Number 轉化為對象
 
      1.先調用對象自身的valueOf方法。如果返回原始類型的值,則直接對該值使用Number函數,返回結果。
       2.如果valueOf返回的還是對象,繼續調用對象自身的toString方法。如果toString返回原始類型的值,則對該值使用Number函數,返回結果。
       3.如果toString返回的還是對象,報錯。
Number([1]); //1
轉換演變:
[1].valueOf(); // [1];
[1].toString(); // '1';Number('1'); //1 

 

  • String 轉化為對象
 
     1.先調用對象自身的toString方法。如果返回原始類型的值,則對該值使用String函數,返回結果。
     2.如果toString返回的是對象,繼續調用valueOf方法。如果valueOf返回原始類型的值,則對該值使用String函數,返回結果。
     3.如果valueOf返回的還是對象,報錯。
String([1,2]) //"1,2"
轉化演變:
[1,2].toString();  //"1,2"
String("1,2");  //"1,2"

 

  • Boolean 轉化對象
     Boolean轉換對象很特別,除了以下六個值轉換為false,其他都為true
undefined  null  false  0(包括+0和-0)  NaN  空字符串('')
Boolean(undefined)   //false
Boolean(null)        //false
Boolean(false)       //false
Boolean(0)           //false
Boolean(NaN)         //false
Boolean('')          //false
 
Boolean([])          //true
Boolean({})          //true
Boolean(new Date())  //true

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM