JavaScript包装对象简介

什么是包装对象?

  • 存取字符串、数字或布尔值的属性时创建的临时对象称作包装对象

哪里会使用到包装对象?

不知道你是否会注意到我们平时在操作字符串时注意到如下现象
我们看到普通的的字符串变量竟然有属性和方法:

var str = 'hello world';
var s = str.substring(2, str.length - 2);

我们知道,只有对象才有属性和方法,字符串既然不是对象,为什么它会有属性呢?

  • 只要引用了字符串str的属性,JavaScript就会将字符串值通过调用new String(str)的方式转换成对象,这个对象继承了字符串的方法,并被用来处理数据的引用,一旦属性引用结束,这个新创建的对象就会销毁,我们也称这个新创建的对象为包装对象

布尔值与数字

同字符串一样,数字和布尔值也具有各自的方法:通过Number()Boolean()构造函数创建一个包装对象,这些方法的调用均是来自于这个包装对象,nullundefined没有包装对象

var num = 3.1415926;
num.toString(); // => "3.1415926",转为字符串
num.toFixed(3); // => "3.142",转为保留小数点后三位的字符串
var bool = true;
bool.toString(); // => "true",转为字符串
bool.valueOf();  // => 1,转为数字

加深对包装对象的理解

看如下代码,思考他们的执行结果:

var str = 'hello';
str.len = 5;           //给它设置一个属性
console.log(str.len);  //尝试输出这个属性值

当运行这段代码时,输出的结果为undefined
思考:
第二行代码意思是JavaScript给str变量创建一个包装对象,并且给这个包装对象一个len属性,但执行完毕后这个包装对象被销毁
第三行我们尝试输出str.len时,也就是引用字符串的属性时,JavaScript又给我们创建一个str变量的包装对象,这是新创建的对象,显然,这个新创建对象的len属性不存在,输出undefined

注意事项

需要注意的是,可通过String()Number()或者Boolean()构造函数来显示创建包装对象:

var s = "hello";
var n = 18;
var b = false;

var S = new String(s);
var N = new Number(n);
var B = new Boolean(b);

JavaScript会在必要的时将包装对象装换为原始值(undefined、null、布尔值、数字和字符串),因此上述代码中的对象S、N、B常常–但不总是–表现的值和s、n、b一样。"==“等于运算符将原始值和其包装对象视为相等,但”==="全等运算符将它们视为不等,通过typeof运算符可以看到原始值和其包装对象的不同

  • 说到运算符的转换,不如再来看一下这里(待更新)在这里插入图片描述
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值