包装类、包装类对象、包装类的类型转换功能(已完结)

本文详细介绍了JavaScript中的包装类,包括Boolean、String和Number。阐述了包装类对象的创建(隐式与显示)、包装类的类型转换功能,特别是涉及基本类型到对象的转换以及在类型转换过程中遇到的空格、非数字字符等问题。

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

包装类、包装(类)对象、包装类的类型转换功能

本文案的主要目的就是区分:包装类、包装类对象、使用包装类进行类型转换,这三者

在叙述前首先区分三者间的关系(因为在复习过程中,发现自己傻傻分不清):

1.包装类:

JS提供了三个包装类——Boolean、String、Number

这儿不是基本数据类型中的boolean、string、number。上述是包装类,是对象

2.包装(类)对象:

使用new Boolean/String/Number()创建的对象即为包装类对象

3.包装类的类型转换功能:

当不通过new运算符调用这些这些函数时,它们便作为类型转换函数。如:Number(‘3’)——将字符串类型转换为数字类型

new Boolean/String/Number()得到的是对象,是引用类型;而包装类作为类型转换函数时,得到的是基本类型的一个值,不是对象

包装(类)对象
  • 隐式创建包装对象

我们经常会这样操作字符串:

    var str = 'ZhongGuoMei';
    var len = str.length;

那么,问题是:字符串只是一个基本类型的数,并非对象,为什么能够获取他的length属性呢?

这是因为:只要读取了str的属性,那么JS就会在后台(隐式的)通过new String(str)的方式将str转换为一个包装对象。从而便可以读取该属性了!但是,一旦属性读取结束,这个隐式创建的包装对象便会被销毁

总结:

只要对基本数据类型中的string/number/boolean这几个类型进行读取或写入属性操作,那么都会调用各自对应的包装类,通过new的方式隐式地创建一个包装对象。同时,一旦读取或写入操作执行完毕,包装对象会被立即销毁

    var str = 'ZhongGuoFan';
    str.nb = 11;//相当于new String(str).nb = 11;
    console.log(str.nb);//undefined

因为在执行str.nb是会创建包装对象new String(str)–>然后向该包装对象中写入属性nb–>写入操作执行完毕,销毁包装对象,所以输出undefined

  • 显示创建包装对象

即直接用new创建:

    var str = '残暴的欢愉终将以残暴结束',
        num = 100,
        bool = true;    
    var S = new String(str),
        N = new Number(num),
        B = new Boolean(bool);

还有一点应该留意:在创建包装类对象时,如果实际传入的参数类型与期待的参数类型不相符,则传入的参数会在内部隐式的进行类型转换(这些隐式的类型转换都是通过下面讲的‘类型转换函数完成的’)。例如:

    var Num = new Number('123BGM');

上述代码中,Number的参数期待传入的应该是一个number类型,但是却是一个string类型。此时,便会在内部隐式的调用Number(注意,此时Number是作为类型转换函数使用的)将其转换为number类型,然后再创建包装对象。

当然,创建其他包装对象时同理

‘==’运算符将原始值与其包装对象视为相等

包装类的类型转换功能

在将Number/String/Boolean做为类型转换函数使用时,遵循如下规则:

这里写图片描述

除上述表格外,Number作为类型转换函数时还应注意下列问题:

1.在通过Number将字符串转换为数字时,允许字符串的开始与结尾带有若干空格,在进行转换时,这些空格将会被忽略

2.字符串中的非数字字符(除两头的空格外)会导致Number的转换结果为NaN。如:’123er’、‘123 78’

3.Number转换的结果是一个十进制数。如:Number(0x123)=291

ps:本文案参考了以下书籍
《JavaScript权威指南》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值