JavaScript包装类

3,430 阅读2分钟

包装类:

  1. js有三个包装类
    • Number、Boolean、String
  2. 所有的包装类都有 valueOf() 和 toString() 方法
    • 基本上所有的对象 都有 valueOf() 和 toString() 方法
    • Math 和 Error 对象没有valueOf方法
  3. 包装类才有 组包 和 拆包
    • 巧记:组包是由简单变复杂,拆包是由复杂变简单

    • 组包:基本数据类型 转成 引用数据 类型

      • 显式组包:new 包装类()
      • 隐式组包:
      var test=1;
      test.toString(); //'1' 这个过程就有隐式组包,因为只有对象才有方法
      
    • 拆包: 引用数据 类型 转成 基本数据 类型

      • 调用 包装类.valueOf()
      操作对象类型 返回值
      Boolean 布尔值
      Number 数字值
      String 字符串
      ---------------------- 以上的操作对象的valueOf方法 也叫拆包
      Array 数组本身
      Date 从1970年1月1日开始到现在的毫秒数
      Function 函数本身
      Object 对象本身(这也是默认情况)
    • 隐式组包 和 隐式拆包

      • var test = 1; test.toString(); // '1' 组包 test = new Number(test);
      • typeof test;// number 隐式拆包了
    • 显式组包 和 显式拆包

      • test = new Number(test);// 组包
      • test = test.valueof();//拆包

Boolean

  • toString() 方法返回指定的布尔对象的字符串形式。
var flag1 = new Boolean(true);
console.log(flag1.toString()); //  "true"
var flag2 = new Boolean(1);
console.log(flag2.toString());// "true"
  • valueOf() 方法返回一个Boolean对象的原始值
var x = new Boolean();
console.log(x.valueOf());// false
var y = new Boolean("Mozilla");
console.log(y.valueOf());//  true

Number

  • 一些方法和Global上的方法功能一样,一般都是用Global上的方法即可:
    //例如: Number.parseInt() 、Number.parseFloat()
    var num = '23a3';
    Number.parseInt(num) // 23
    parseInt(num); // 23, Global上的parseInt()
    

String 包装类

  • String包装类 隐式 或 显式 组包以后可以使用一些String原型上的一些api
    • charAt(index) 方法从一个字符串中返回指定的字符。
      • index默认为0
      • index大于字符串总长度,返回空字符串
  • indexOf(searchValue[, fromIndex]) 查找字符串中是否存在某个字符串,并返回所在索引 。
    • fromIndex 默认为0,从某个位置开始查找
    • 如果未找到该值,则返回-1
  • lastIndexOf 和indexOf类似,是查找最后一次出现的索引位置
  • slice(begin[, end]) 方法提取一个字符串的一部分,并返回一新的字符串。
    • begin 开始位置
    • end结束位置,默认值是从begin一直到字符串结束
  • concat将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。
  • toUpperCase() 将调用该方法的字符串值转换为大写形式,并返回。
  • toLowerCase() 会将调用该方法的字符串值转为小写形式,并返回。
  • trim() 方法会从一个字符串的两端删除空白字符