js包装对象(最核心)

包装对象

现实开发中我们经常会用到包装对象,如下代码:

var string = 'hello , 我是老六';
var arr = string.split(',');

大家是否注意到这个问题,这种基本数据类型不是对象,为什么它会有属性呢?

只要引用了字符串string的属性,js就会将字符串值通过调用 new String(string)的方式转换为对象,这个对象继承了字符串的方法,并被用来处理属性的引用。 这时候string.split(',')产生了一个临时字符串对象,可以使用String上的方法。不过要注意的是,一旦属性引用结束,这个新创建的对象就会销毁。

如下代码很好证明了这一临时对象创建和销毁的过程:

var s = 'hello , 我是老六'; //创建一个字符串
s.leng = 5;                 //设置s.leng(不是s.length)属性值
var word = s.leng;          // word为undefined

第二行代码,s.leng创建了一个临时字符串对象,并给s.leng赋值为5,然后销毁这个临时对象。所以第三行查询不到s.leng,因为被自动销毁了。

总结:

包装对象: 存取字符串,数字,布尔值的属性时创建的临时对象。 

当基本数据类型(number,string,boolean)调用对应String类,Number类,Boolean类的方法时,js自动隐式调用new String()或者new Number()或者new Boolean()的方式,使得数据操作得以实现。 null和undefined没有包装对象,访问他们的属性会造成一个类型错误。

当然我们也可以手动显示创建包装对象:

var s = 'hello , 我是老六', n = 123 , b = true;
var S = new String(s);
var N = new Number(n);
var B = new Boolean(b);

打印s与S的结果对比:

S
String {"hello , 我是老六"}0: "h"1: "e"2: "l"3: "l"4: "o"5: " "6: ","7: " "8: "我"9: "是"10: "老"11: "六"length: 12__proto__: String[[PrimitiveValue]]: "hello , 我是老六"
s
"hello , 我是老六"
s==S
true
s===S
false
typeof s
"string"
typeof S
"object"

包装对象的应用场景:

主要应用:跟第一个代码一样。 临时对象调用方法得出想要的操作数据,然后存储这个理想中的操作数据。并不会对变量string造成影响。

var string = 'hello , 我是老六';
var arr = string.split(',');

 以上为个人学习研究心得,如有不正确或者有别的见解的地方,欢迎下方留言评论交流分享

本人及工作室承接  软件开发、技术咨询、代写代码(大小项目)、软件模板出售、项目教学、毕业实践项目

个人微信:laoliukaifa                  工作室网站:www.globalbuy123.com   

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值