为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类型:Boolean、Number和String。这些类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。
一、基本包装类型概述
var s1 = "some text";
var s2 = s1.substring(2);
这个例子中的变量s1包含一个字符串,字符串当然是基本类型值。而下一行调用了s1的substring()方法,并将返回的结果保存在了s2中。我们知道,基本类型值不是对象,因而从逻辑上讲它们不应该有方法。其实,为了让我们实现这种直观的操作,后台已经自动完成了一系列的处理。当第二行代码方位s1时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值。而在读取模式中访问字符串时,后台都会自动完成下列处理。
(1) 创建String类型的一个实例;
(2) 在实例上调用指定的方法;
(3) 销毁这个实例。
可以将以上三个步骤想象成是执行了下列ECMAScript代码。
var s1 = new String("some text");
var s2 = s1.substring(2);
s1 = null;
基本的字符串就变得跟对象一样了;这样也适用Boolean,Number
引用类型与基本包装类型的主要区别就是对象的生命期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即销毁。
二、Boolean类型
Boolean类型是与布尔值对应的引用类型。要创建Boolean对象,可以调用Boolean构造函数并掺入true或false值。
var booleanObject = new Boolean(true); //建议不要使用
三、Number类型
Number类型有一些静态属性(直接通过Number调用的属性,而无须new运算符)和方法。
属 性 | 描 述 |
MAX_VALUE | 表示最大数 |
MIN_VALUE | 表示最小值 |
NaN | 非数值 |
NEGATIVE_INFINITY | 负无穷大,溢出返回该值 |
POSITIVE_INFINITY | 无穷大,溢出返回该值 |
prototype | 原型,用于增加新属性和方法 |
方 法 | 描 述 |
toString() | 将数值转化为字符串,并且可以转换进制 |
toLocaleString() | 根据本地数字格式转换为字符串 |
toFixed() | 将数字保留小数点后指定位数并转化为字符串 |
toExponential() | 将数字以指数形式表示,保留小数点后指定位数并转化为字符串 |
toPrecision( | 指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串 |
var num=1000.789;
alert(num.toString()); //转换为字符串,传参可以转换进制
alert(num.toLocaleString()); //本地形式,1,000.789
alert(num.toFixed(2)); //小数点保留,1000.78
alert(num.toExponential()); //指数形式,传参会保留小数点
alert(num.toPrecision(3)); //指数或点形式,传参保留小数点
四、String类型
String类型包含了三个属性和大量的可用内置方法。
属 性 |
描 述 |
length | 返回字符串的字符长度 |
constructor | 返回创建String对象的函数 |
prototype | 通过添加属性和方法扩展字符串定义 |
String也包含对象的通用方法,比如valueOf()、toLocaleString()和toString()方法,但这些方法都返回字符串的基本值。
方 法 | 描述 |
charAt(n) | 返回指定索引位置的字符 |
charCodeAt(n) | 以Unicode编码形式返回指定索引位置的字符 |
var str='Mr.Lee';
alert(str.charAt(1)); //r
alert(str.charCodeAt(1)); //114
alert(str[1]); //r,通过数组方式截取 box[1]在IE浏览器会显示undefined,所以使用时要慎重。
方 法 | 描述 |
concat(str1...str2) | 将字符串参数串联到调用该方法的字符串 |
slice(n,m) | 返回字符串n到m之间位置的字符串 |
substring(n,m) | 同上 |
substr(n,m) | 返回字符串n开始的m个字符串 |
方 法 | 描述 |
indexOf(str,n) | 从n开始搜索的第一个str,并将搜索的索引值返回 |
lastIndexOf(str,n) | 从n开始搜索的最后一个str,并将搜索的索引值返回 |
方 法 | 描 述 |
toLowerCase(str) | 将字符串全部转换为小写 |
toUpperCase(str) | 将字符串全部转换为大写 |
toLocaleLowerCase(str) | 将字符串全部转换为小写,并且本地化 |
toLocaleupperCase(str) | 将字符串全部转换为大写,并且本地化 |
方 法 | 描 述 |
match(pattern) | 返回pattern 中的子串或null |
replace(pattern, replacement) | 用replacement 替换pattern |
search(pattern) | 用replacement 替换pattern |
split(pattern) | 返回字符串按指定pattern 拆分的数组 |