基本包装类型

var n1 = 1var n2 = new Number(1)的区别。
当我们执行 n1 = 1 时,创建一个基本类型的值。
当执行n2 = new Number时,创建一个对象。(包装成一个对象)这样就就可以运行公共的方法,比如toString()、valueOf()等。
内存图

基本包装类型
文章图片
1.png
所以n2可以执行相应的方法。但是发现n1也一样可以执行toString()等方法。
这是因为js有一个自动转换的机制。当我们执行 n1.toString()时,在js内部帮我们生成一个临时的n1包装对象,执行完成后销毁这个对象。
var n = 1 n.xxx =2。本来n是一个基本类型,是不存在属性的(所以执行n.xxx = 2应该会报错)。但是执行 n.xxx = 2时,js生成一个临时包装对象,执行完后就被销毁。所以console.log(n.xxx)undefined
【基本包装类型】new String()和new Boolean()也跟上面一样。

    推荐阅读