JavaScript包装对象

1
2
3
4
var s = 'test'; 
var S = new String(s);
alert(typeof s);
alert(typeof S);

这段代码只是简单地赋值,但是第一个弹窗会显示string,二第二个弹出会显示Object,

1
2
3
4
var s = 'test'; 
var S = new String(s);
alert(typeof s);
alert(typeof S);

这段代码只是简单地赋值,但是第一个弹窗会显示string,二第二个弹出会显示Object,第一个是一个字符串类型不是对象,那为什么还有诸如此类对象才有的属性和方法呢?

1
alert(s.length);

这是因为JS只要发现你引用了string类型的属性或者方法,就会自动调用new String(s),把s转换成了一个对象。

1
alert(s == S);

这段代码会返回true,因为值相等
但是这段代码会返回false,因为值即使相等,但是类型不同。

1
alert(s === S);