包装类:
- js有三个包装类
- Number、Boolean、String
- 所有的包装类都有 valueOf() 和 toString() 方法
- 基本上所有的对象 都有 valueOf() 和 toString() 方法
- Math 和 Error 对象没有valueOf方法
- 包装类才有 组包 和 拆包
-
巧记:组包是由简单变复杂,拆包是由复杂变简单
-
组包:基本数据类型 转成 引用数据 类型
- 显式组包: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大于字符串总长度,返回空字符串
- charAt(index) 方法从一个字符串中返回指定的字符。
- indexOf(searchValue[, fromIndex]) 查找字符串中是否存在某个字符串,并返回所在索引 。
- fromIndex 默认为0,从某个位置开始查找
- 如果未找到该值,则返回-1
- lastIndexOf 和indexOf类似,是查找最后一次出现的索引位置
- slice(begin[, end]) 方法提取一个字符串的一部分,并返回一新的字符串。
- begin 开始位置
- end结束位置,默认值是从begin一直到字符串结束
- concat将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。
- toUpperCase() 将调用该方法的字符串值转换为大写形式,并返回。
- toLowerCase() 会将调用该方法的字符串值转为小写形式,并返回。
- trim() 方法会从一个字符串的两端删除空白字符