包装类型:专门封装基本数据类型,并提供操作基本类型值的API。常用的基本类型boolean,string和number的值,本身是不具备任何功能的。为了便于操作基本类型,ECMAScript提供了3个特殊的基本类型:Boolean,String和Number.
var n = 3.1415;
var n2 = n.toFixed(2);
console.log(n2); //3.14
后台自动完成的一系列处理:
1.判断n的基本类型 typeof n -> number
2.创建Number类型的一个实例 var n = new Number(3.1415);
3.在实例上调用指定的方法 var n2 = n.toFixed(2);
4.销毁这个实例 n2 = null;
引用类型与基本包装类型的主要区别就是对象的生存期
使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。这意味着,我们不能在运行时为基本类型值田间属性和方法。【js高程】
var str ="carmen";
str.len = 10;
console.log(str.len); //undefined
第二行代码执行时:
new String().len = 10
new String 被销毁
到第三行时:
创建新的String对象, 它没有len属性,所以是undefined
注意:使用new调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的。
var s = "carmen";
var str = String(s); // 转型函数
console.log(typeof str); //string
str.len = 10;
console.log(str.len); // undefined
var s = "carmen";
var str = new String(s); // 构造函数
console.log(typeof str); //object
str.len = 10;
console.log(str.len); // 10