js中基本包装类型详情
基本包装类型
基本包装类型有Boolean,Number和string类型,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型对象.
从逻辑上,基本类型值不是对象,没有方法,但从技术上来看,当读取一个基本类型值时,后台会自动运行下面的过程:
- 创建一个基本包装类型Boolean,Number,String类型的一个实例
- 在实例上调用指定的方法
- 销毁基本包装类型实例
可以将上面的过程想象为下面的代码:
var s1 = new String("some text");// Boolean, Number 也是如此
var s2 = s1.substring(2);
s1 = null;
虽然在技术上这样可以创建基本包装类型的实例,但在非必要的情况下,千万不要这么做.
因为对基本包装类型的实例调用 typeof 会返回"object",而且所有基本包装类型的实例都会被转换为布尔值 true。
引用类型和基本包装类型的主要区别就是实例的生存期:
- 使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中.
- 后台自动创建的基本包装类型的实例,只会存在一行代码中,因此不能在运行时为基本包装类型添加属性和方法
var s1 = "some text";
s1.color = "red";
console.log(s1.color);// undefined
使用Object构造函数来创建基本包装类型的实例
var obj = new Object("some text");
console.log( obj instanceof String );// true
var obj = new Object(25);
console.log( obj instanceof Number );// true
var obj = new Object(true);
console.log( obj instanceof Boolean );// true
这是我的签名