日期:2014-05-16  浏览次数:20355 次

new Number()的类型为什么是object?
<!DOCTYPE html>
<html>
<body>

<script>
var test1 = new Number();
document.write( typeof( test1 ) + "<br />" );
document.write( test1 + "<br />" );
var test2 = new Number( 1 );
document.write( typeof( test2 ) + "<br />" );
document.write( test2 + "<br />" );
var test3 = 1
document.write( typeof( test3 ) + "<br />" );
document.write( test3 + "<br />" );
</script>

</body>
</html>
结果:
object
0
object
1
number
1

------解决方案--------------------
因为它确实是一个对象啊,所以typeof没有欺骗你。

js中值分为原始值和引用值,var test3 = 1,test3是原始值,var test2 = new Number(1);test2是引用值,虽然他们的值都是1。Number类是原始值number类型的封装。

同样的还有string类型和String类封装。
------解决方案--------------------
new Number() new出来的是对象,没有给初始值,故number默认的是0