9.包装类

一些应该掌握的知识点

  • 如果在一个原始值上添加属性,当你去访问原始值的属性时,JS引擎会给你这个原始值包装成一个对象,使得所添加的属性可以访问,这就是包装类。

  • 包装类原理案例分析

    分析:
      分析前先看一个代码示例:现在声明一个变量num,给num赋值一个对象类型的数值1,并给num添加一个length属性,同时给该属性赋值10,通过console.log()对变量num和它的属性num进行检查,结果如下所示:

var num = new Number(1); //声明一个变量num,并给该变量赋值一个对象类型的1
consol.log(num); //控制台显示一个对象类型的1
num.length = 10; //给变量num添加length属性并给该属性赋值10
console.log(num.length) //控制台显示10

  原始值的属性一般是不可以被访问的,因为原始值是不存在任何属性的,当需要访问的时候,JS引擎会把这个原始值包装成一个对象,这时这个原始值下的属性就可以被访问了——如下代码所示,当给原始值a添加了一个length属性以后,JS引擎发现a是一个数值类型的原始值,而又需要操作a的属性,于是就给a包装成一个对象,效果相当于上例所示那样对原始值a进行new Number(a),这样当执行语句a.length时就相当于执行语句new Number(a).length,但由于a实际上是一个数值类型的原始值,而数值类型的原始值即使包装后也没有length属性可以访问,所以最终用控制台检查时最终的显示是undefined。

var a = 1; //变量a被赋值后成为一个数值类型的原始值
a.length = 10; //给原始值a添加length属性
console.log(a.length); //控制台显示undefined
  • 包装类型
    • 需要注意的是,不同类型的原始值被JS引擎包装后都有自己的属性,譬如说被包装后,字符串类型可能拥有数值类型所没有的属性,再譬如说包装后的数值类型是没有length属性的,而被包装后的字符串类型则有。
    • 关于基本包装类类型介绍的一篇博客参考:脚本之家 mdxy-dxy:javascript基本包装类型介绍
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值