1. 简介
为了便于操作基本类型,ECMAScript 提供了 3 种特殊的引用类型:Boolean
、Number
、String
。与其他引用类型相似,但同时也具有与各自基本类型相应的特殊行为。
实际上,每当读取一个基本类型的时候,后台就会创建一个对应的基本包装类型的对象。
当访问到基本类型时,访问过程出于一种读取模式,也就是从内存中读取值。而在读取模式中访问字符串时,后台都会自动完成下列处理:
创建 String 类型的一个实例
在实例上调用指定的方法
销毁这个实例
经过处理后,基本的字符串就变成跟对象一样了。
引用类型和基本包装类型的主要区别在于对象的生存期。
引用类型在执行流离开当前作用域之前都一直保存在内存中
自动创建的基本包装类型的对象,则只存在与一行代码的执行瞬间,然后立即销毁。意味着我们不能在运行时为基本类型值添加属性和方法。
对基本包装类型的实例调用 typeof
会返回 object
,而且所有基本包装类型的对象都会被转换为布尔值 true
2. Boolean 类型
Boolean
类型是与布尔值对应的引用类型,要创建 Boolean
对象,可以调用 Boolean
构造函数并传入 true
或 false
值。
var booleanObject = new Boolean(true);
Boolean
类型重写了 valueOf()
方法,返回基本类型值 true
或 false
,重写了 toString()
方法,返回字符串 "true"
或 "false"
。
常见问题,在布尔表达式中使用 Boolean
对象
var falseObject = new Boolean(false); // 是一个对象
var result = falseObject && true;
alert(result); //true
var falseValue = false; // 是一个布尔类型
result = falseValue && true;
alert(result); //false
布尔表达式中,所有对象都会被转换为 true
基本类型和引用类型的布尔值的其他两个区别:
typeof
操作符,基本类型返回boolean
,引用类型返回object
引用类型使用
instanceof
操作符测试Boolean
对象返回true
,基本类型返回false
建议永远不要使用 Boolean 对象
3. Number 类型
是与数字值对应的引用类型。创建 Number
对象,可以调用 Number
构造函数向其中传递相应的数值。
var numberObject = new Number(10);
重写了 valueOf()
toString()
toLocaleString()
方法
valueOf()
方法返回对象表示的基本类型值toString()
toLocaleString()
返回字符串形式的数值
3.1 toFixed()
用于将数值转化为字符串的方法 toFixed()
,会按照指定的小数位返回数值的字符串表示
var num = 10;
alert(num.toFixed(2)); //10.00
var num = 10.005;
alert(num.toFixed(2)); //10.01
如果数值本身包含的小数位比指定的多,那么接近指定的最大小数位的值就会舍入
可以表示带有 0 到 20 个小数位的数值,有些浏览器还支持更多位数,适合处理货币值
3.2 toExponential()
返回指数表示法(也称 e 表示法)表示的数值的字符串形式。
接受一个参数,指定输出结果中的小数位数。
var num = 10;
alert(num.toExponential(1)); // "1.0e+1"
4. String 类型
这个类型在 JavaScript 中非常重要,内置方法等也比较多,所以放置在独立章节中。