关于web前端js的包装对象与原始值

178 阅读1分钟

web前端基础包装对象与原始值

js中原始值类型有字符串,数字,null,布尔值,undefined五种,当定义一个原始值,使用其方法时,js会通过构造函数的方式转换成对象,这个对象就继承了原始值的方法,并被用来处理属性的引用,一旦属性引用结束,这个新创建的对象就会销毁(其实在实现上并不一定创建或销毁这个临时对象,然而整个过程看起来是这样的)

var s ='test'; //创建一个字符串
s.num = 5;  // 给她设置一个属性
var t = s.num  //查询这个属性

当运行这段代码时,t的值为undefined。第二行代码创建了一个临时字符串对象,并给其num属性赋值为5,随即销毁这个对象,第三行代码通过原始的字符串值创建一个新字符串对象,尝试读取其属性,这个属性自然不存在,

包装对象与原始值不相等

js会在必要的时候将包装对象转换成原始值,也会在必要的时候把原始值转换成包装对象,

var a = 'test';
var b = 1;
var c = true;
var A = new String(a);
var B = new Number(b);
var C = new Boolean(c)
a===A //false
b===B //false
c===C //false

通过typeof运算符可以看到原始值与其包装的对象不同