包装对象

包装对象
存取字符串、数组、布尔值的属性时临时创建的对象叫做包装对象。
例:

var s = "Hello World!";
var world = s.substring(s.indexOf("")+1, s.length);

console.log(s, world);
 执行结果:Hello World! World!

字符串不是对象,为什么会有属性呢?
只要引用字符串s的属性,JavaScript就会将字符串值通过new String(s)的方式转换成对象,这个对象继承了字符串的方法,并用来处理属性的引用,一旦引用结束,这个新创建的对象就会销毁。
那么其它的原始数据类型呢?
同字符串一样,数字和布尔值也具有各自的方法:通过Number()和Boolean()构造函数创建一个临时对象,这些方法的调用均是来自于这个临时对象。但null和undefined没有包装对象,访问它们的属性会造成一个类型错误。

分析如下代码:

var s = "test";  //创建一个字符串
s.len = 4;       //给他设置一个属性
var t = s.len;   //查询这个属性

console.log(t);
执行结果为:undefined

第二行代码创建一个临时字符串对象,并给其len属性赋值为4,随即销毁这个对象。第三行通过原始的(没有被修改过)字符串值创建一个新字符串对象,尝试读取其len属性,这个属性不存在,表达式求值的结果为undefined。
这段代码说明了在读取字符串、数字和布尔值的属性值(或方法)的时候,表现的和对象一样。但如果你试图给其属性赋值,则会忽略这个操作:修改只是发生在临时对象身上,而这个临时对象并未继续保留下来。

参考文献:《JavaScript权威指南》(第六版)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值