JavaScript包装类(一)

111 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

1 认识包装类型

JavaScript的原始类型并非对象类型,所以从理论上来说,它们是没有办法获取属性或者调用方法的。但是,在开发中会看到,我们会经常这样操作:

1669998468468.png 那么,为什么会出现这样奇怪的现象呢?

  • 原始类型是简单的值,默认并不能调用属性和方法;
  • 这是因为JavaScript为了可以使其可以获取属性和调用方法,对其封装了对应的包装类型;

常见的包装类型有:String、Number、Boolean、Symbol、BigInt类型

2 包装类型的使用过程

  • 默认情况,当我们调用一个原始类型的属性或者方法时,会进行如下操作:

    • 根据原始值,创建一个原始类型对应的包装类型对象;
    • 调用对应的属性或者方法,返回一个新的值;
    • 创建的包装类对象被销毁;
    • 通常JavaScript引擎会进行很多的优化,它可以跳过创建包装类的过程在内部直接完成属性的获取或者方法的调用。
  • 我们也可以自己来创建一个包装类的对象:

  • name1是字面量(literal)的创建方式,name2是new创建对象的方式;

1669998679210.png

  • 注意事项:null、undefined没有任何的方法,也没有对应的“对象包装类”;

3 Number 类的补充

  • 前面我们已经学习了Number类型,它有一个对应的数字包装类型Number,我们来对它的方法做一些补充。
  • Number属性补充:
    • Number.MAX_SAFE_INTEGER:JavaScript 中最大的安全整数 (2^53 - 1)
    • Number.MIN_SAFE_INTEGER:JavaScript 中最小的安全整数 -(2^53 - 1)
  • Number实例方法补充:
    • 方法一:toString(base),将数字转成字符串,并且按照base进制进行转化
      • base 的范围可以从 2 到 36,默认情况下是 10;
      • 注意:如果是直接对一个数字操作,需要使用..运算符;
    • 方法二:toFixed(digits),格式化一个数字,保留digits位的小数;
      • digits的范围是0到20(包含)之间;
  • Number类方法补充:
    • 方法一:Number.parseInt(string[, radix]),将字符串解析成整数,也有对应的全局方法parseInt;
    • 方法二:Number. parseFloat(string),将字符串解析成浮点数,也有对应的全局方法parseFloat;
  • 更多Number的知识,可以查看MDN文档:

4 Math对象

  • 在除了Number类可以对数字进行处理之外,JavaScript还提供了一个Math对象。
    • Math是一个内置对象(不是一个构造函数),它拥有一些数学常数属性和数学函数方法;
  • Math常见的属性:
    • Math.PI:圆周率,约等于 3.14159;
  • Math常见的方法:
    • Math.floor:向下舍入取整
    • Math.ceil:向上舍入取整
    • Math.round:四舍五入取整
    • Math.random:生成0~1的随机数(包含0,不包含1)
    • Math.pow(x, y):返回x的y次幂
  • Math中还有很多其他数学相关的方法,可以查看MDN文档: