多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 5.4 基本包装类型 ECMAScript提供了三个基本包装类型:`Boolean、Number、String`。 实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能过调用一些方法来操作这些数据。 引用类型与基本包装类型的区别在于**对象的生存期**:使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中,而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即销毁。这意味着我们**不能在运行时为基本类型值添加属性和方法**。 注意:使用new调用基本包装类型的构造函数,与直接调用同名的转型函数式不一样的。 ~~~ var value = "25; var number = Number(value); //转型函数 alert(typeof number); //"number" var obj = new Number(value); //构造函数 alert(typeof obj); //"object" ~~~ ### 5.4.1 Boolean类型 Boolean类型是与布尔值对应的引用类型。常用于生成布尔值的包装对象的实例。 ~~~ var bool = new Boolean(true); ~~~ Boolean类型的实例重写了valueOf()方法,返回的基本类型值true或false,重写了toString()方法,返回字符串“true”和“false”。 要注意一点的是,即使你使用false创建一个Boolean实例对象,当进行逻辑运算时,它会被转为true,因为它是一个对象,而所有对象在逻辑运算中都会返回true。 ~~~ var falseObeject = new Boolean(false); var result = falseObject && true; alert (result); //true; ~~~ 建议:永远不要使用Boolean对象 ### 5.4.2 Number类型 Number是与数字值对应的引用类型。 **1.创建Number对象** ~~~ var num = new Number(); var num2 = new Number(10); ~~~ Number类型的toString()方法返回数值的字符串,可传递一个表示基数的参数,默认是10进制。 **2.属性** | 属性 | 描述 | | --- | --- | | MAX_VALUE | 可表示的最大的数。| | MIN_VALUE | 可表示的最小的数。| | NaN | 非数字值。| | NEGATIVE_INFINITY | 负无穷大,溢出时返回该值。| | POSITIVE_INFINITY | 正无穷大,溢出时返回该值。| | Number.MAX_SAFE_INTEGER | 表示能够精确表示的最大整数,即9007199254740991。 | | Number.MIN_SAFE_INTEGER | 表示能够精确表示的最小整数,即-9007199254740991。| **3.格式化方法** | 方法 | 描述 | | --- | --- | | toFixed() | 按照指定的小数位来返回数值的字符串表示(四舍五入)。| | toExponential() | 用于将一个数转为科学计数法形式。| | toPrecision() | 方法可能返回固定大小格式,也可能返回指数格式,具体规则是看哪种格式最合适的。它也接收一个参数,表示数值的所有数字的位数(不包含指数部分)| ### 5.4.3 String类型 String类型是字符串的对象包装类型。 **1.创建String对象** ~~~ var text = new String("Hello world!"); ~~~ String构造函数有一个静态方法: fromCharCode()方法的参数是一系列Unicode码点,返回对应的字符串。 ~~~ var str = String.fromCharCode(104, 101, 108, 108 ,111); console.log(str); // "hello" ~~~ String类型的每个实例都有一个**length属性**,表示字符串中包含多少个字符(从0开始)。 **2.方法** * 字符方法 | 方法 | 描述 | | --- | --- | | chatAt() | 以单字符字符串的形式返回给定位置的字符。 | | charCodeAt() | 返回给定位置字符的Unicode码点(十进制表示)。| * 字符串操作方法 | 方法 | 描述 | | --- | --- | | concat() | 用于连接两个字符串,参数可以是一个或多个字符串,返回拼接得到的新字符串。 | | slice(start,end) | 从start位置提取字符串到end位置 - 1,负数则等于加上字符串长度。*end省略默认末尾*| | substring(start,end) | 从start位置提取字符串到end位置 - 1,负数转成0。 | | substr(start,count) | 从start位置提取count个字符,返回字符串。start为负加上长度,count为负转成0,返回空串。| **以上方法均不影响原字符串。** * 字符串位置方法 | 方法 | 描述 | | --- | --- | | indexOf() | 返回给定元素在字符串中**第一次**出现的位置,如果没有出现则返回-1。第一个参数为要查找的子字符串,可以接受第二个参数,表示搜索的开始位置 | | lastIndexOf() | 返回给定元素在字符串中**最后一次**出现的位置,如果没有出现则返回-1。第一个参数为要查找的子字符串,可以接受第二个参数,表示搜索的开始位置 | * trim()方法 `trim() `是ECMAScript 5新增的,用于去除字符串两端的空格,返回一个新字符串,不改变原字符串。 ~~~ var str = " hello "; console.log(str.trim()); // "hello" ~~~ * 字符串大小写转换方法 | 方法 | 描述 | | --- | --- | | toLowerCase()| 用于将一个字符串全部转为小写,返回一个新字符串,不改变原字符串。| | toUpperCase() | 将字符串的字符全部转为大写。 | * 字符串的模式匹配方法 | 方法 | 描述 | | --- | --- | | match() | 找到一个或多个正则表达式的匹配,找到返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null。| | search() | 返回值为匹配的第一个位置。如果没有找到匹配,则返回-1。 | | replace()| 用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)。 | | split() | 按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组。还可传入第二个参数,决定了返回数组的成员数。 | * localeCompare()方法 `localeCompare()`用于比较两个字符串。它返回一个整数: ~~~ 如果小于0,表示字符串小于参数字符串; 如果等于0,表示两者相等; 如果大于0,表示字符串大于参数字符串。 ~~~