装箱拆箱操作

装箱:就是把基本类型转变为对应的对象。装箱分为隐式和显示
  • 隐式装箱: 每当读取一个基本类型的值时,后台会创建一个该基本类型所对应的对象。在这个基本类型上调用方法,其实是在这个基本类型对象上调用方法。这个基本类型的对象是临时的,它只存在于方法调用那一行代码执行的瞬间,执行方法后立刻被销毁。
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
原文地址:https://www.cnblogs.com/missya/p/11043324.html