zoukankan      html  css  js  c++  java
  • 装箱拆箱操作

    装箱:就是把基本类型转变为对应的对象。装箱分为隐式和显示
    • 隐式装箱: 每当读取一个基本类型的值时,后台会创建一个该基本类型所对应的对象。在这个基本类型上调用方法,其实是在这个基本类型对象上调用方法。这个基本类型的对象是临时的,它只存在于方法调用那一行代码执行的瞬间,执行方法后立刻被销毁。
    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
  • 相关阅读:
    雷林鹏分享:jQuery EasyUI 数据网格
    雷林鹏分享:jQuery EasyUI 数据网格
    雷林鹏分享:jQuery EasyUI 数据网格
    雷林鹏分享:jQuery EasyUI 数据网格
    雷林鹏分享:jQuery EasyUI 数据网格
    雷林鹏分享:jQuery EasyUI 数据网格
    雷林鹏分享:jQuery EasyUI 数据网格
    关于elisp中一些含有'p'的符号
    how elisp works
    elisp 错误提示
  • 原文地址:https://www.cnblogs.com/missya/p/11043324.html
Copyright © 2011-2022 走看看