1)为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类Boolean, Number, String每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象,从而可以使我们调用一些方法操作这些数据。
在创建变量s后(var s = "briup";)
后台进行自动装箱操作(var s = new String(briup);)
在变量s调用String对象的方法操作后,后台自动拆箱,变成String基本数据类型
s.substring(2);
console.log(typeof s);//基本数据类型内的String
综上:
后台会自动完成以下操作:
a.创建String类型的一个实例(var s = new String("briup");)
b.在实例上调用指定的方法(s.substring(2);)
c.销毁这个实例
2)基本包装类型的实例调用typeof返回”object”,从而所有基本包装类型对象都会被转换为布尔类型的true.
Object构造函数会像工厂方法一些,根据传入的值的类型返回相应基本包装类型的实例
var obj = new Object("briup");//object类型 类型为String包装类型
console.log(obj);//返回的是String类型的对象
console.log(obj instanceof String);//返回的是true
使用new调用基本包装类型的构造函数,与直接调用同名的转换函数不一样
var s = "11";
var s1 = Number(s); //转型函数 number类型
var s2 = new Number(s); //构造函数 object类型
3)instanceof方法:检测引用类型
检测某个对象或实例是不是属于某个类型或函数
返回值:true或者false
例:
var arr=[1,2,3];
console.log(arr instanceof Array);//true