基本包装类型,也是一种引用类型。基本包装类型是对基本数据类型的封装,封装后,既具有基本类型的功能,也有各自的特殊行为(方法)。
ECMAScript提供了三个特殊的引用类型(基本包装类型):Boolean、Number和String。
引用类型与基本包装类型的主要区别是对象的生存期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中,而自动创建的基本包装类型只存在于一行代码的执行瞬间,然后立即销毁。
(一)Boolean类型:与布尔值对应的引用类型。
1、创建Boolean对象
调用Boolean构造函数并传入true或false。
var booleanObject = new Boolean(true);
Boolean对象代表两个值:“true”或“false”。
在布尔表达式中使用Boolean对象常会产生误解,比如看下面这个例子。
var falseBoolean = new Boolean(false);
var result = falseObject && true;
alert(result); //true
var falseValue = false;
result = falseValue && true;
alert(result); //false
在这个例子中,我们先用false值创建了一个Boolean对象,然后在布尔运算中,false && true 等于false。但是,例子中的这行代码是对falseObject而不是对它的值(false)进行求值。
在这里,我们需要明确一点,对基本包装类型的实例调用typeof会返回“object”,并且所有基本包装类型的对象在转换为布尔类型时值都是true。
所以,falseObject对象在布尔表达式中代表的是true,那么最后结果也就为true了。
2、属性
- constructor:返回对创建此对象的Boolean函数的引用。
- prototype:可以向对象添加属性和方法。
3、方法
- valueOf():返回基本类型值true或false。
- toString():返回字符串”true”和”false”。
4、基本类型与引用类型的布尔值的区别
- typeof操作符对基本类型返回“boolean”,对引用类型返回“object”。
- 使用instanceof操作符测试Boolean对象会返回true,测试基本类型的布尔值返回false。
【注】建议永远不要使用Boolean对象。
(二)Number类型:与数字值对应的引用类型。
1、创建Number对象
调用Number构造函数时传递相应的数值。
var numberObject = new Number(10);
2、属性
属性 | 描述 |
---|---|
constructor | 返回对创建此对象的 Number 函数的引用。 |
MAX_VALUE | 可表示的最大的数。 |
MIN_VALUE | 可表示的最小的数。 |
NEGATIVE_INFINITY | 负无穷大,溢出时返回该值。 |
POSITIVE_INFINITY | 正无穷大,溢出时返回该值。 |
NaN | 非数字值。 |
prototype | 可以向对象添加属性和方法。 |
3、方法
1)(重写)继承的方法
- valueOf():返回对象表示的基本类型的数值。
- toLocaleString():返回字符串形式的数值。
- toString():返回字符串形式的数值;传递一个表示基数的参数,可以返回几进制数值的字符串形式。
2)非继承的方法
- toFixed():按照指定小数位返回数值的字符串表示。可以自动舍入。适合处理货币值。
- toExponential():用于格式化数值,返回以指数表示法(e表示法)表示的数值的字符串形式。接收一个参数,即用于指定输出结果中的小数位数。
- toPrecision():返回最合适的格式,可能是固定大小格式,也可能是指数格式。接收一个参数,即表示数值的所有数字的位数(不包括指数部分)。
var num1 = 10.005;
alert(num1.toFixed(2)); // 10.01
var num2 = 10;
alert(num2.toExponential(1)); // 1.0e+1
var num3 = 99;
alert(num3.toPrecision(1)); // 1e+2
alert(num3.toPrecision(2)); // 99
alert(num3.toPrecision(3)); // 99.0