JavaScript--基本包装类型

本文深入探讨了JavaScript中String、Boolean、Number作为基本包装类型的角色,解析了这些类型如何临时转化为对象以支持方法调用,并立即销毁的过程。揭示了基本包装类型与引用类型在对象生存周期上的关键差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看《JavaScript高级程序设计》一书,顺手做做笔记。

已知JS中,String,Boolean,Number是属于基本类型,即它们都不是对象。然而,在使用JS中,会经常用到它们的方法,如

var str  = "string";

var ret = str.substr(1);

这时候就有疑惑了,变量str不是Object类型,哪里来的方法呢?

因为String,Boolean,Number它们三个除了是基本类型之外,还有另外一个身份:特殊的引用类型----基本包装类型。


基本包装类型是什么?

基本包装类型是指基本类型String,Boolean,Number在后台运行时的一种特殊形态。

我觉得用代码来解释会比较简洁。

var str = "test";

var str1 = str.substr(1);  //当代码执行到这里时,在后台创建了一个String类型的对象,然后调用这个对象的substr方法。当方法调用完后,就马上销毁对象了,重要的事情说三遍:当方法调用完后,就马上销毁对象了!当方法调用完后,就马上销毁对象了!当方法调用完后,就马上销毁对象了!


看到这里,很多人应该以为基本包装类型可以和引用类型一样使用了吧。然而,它们之间还是有一定差别的。


基本包装类型和引用类型的主要区别,在于对象的生存周期。基本包装类型中的对象就像夜空中的流星,来不及许愿,就没了(该行代码执行完后就被销毁了)。而引用类型中的对象,在执行流离开当前作用域之前会一直保存在内存中。

所以 :

var str = "test";

str.name = "wang";  

alert(str.name); //输出的是undefined,str中的“对象”来到这里已经消失了,执行alert(str.name)时创建了新的String对象,而该对象中没用name这个属性。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值