基本包装类型

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()也跟上面一样。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容