【JavaScript由浅入深】包装类型
文章目录
JavaScript的原始类型并非对象类型,所以从理论上来说,它们是没有办法获取属性或者调用方法的。
但是为了便于操作原始类型的值,JavaScript为了可以使其可以获取属性和调用方法,对其封装了对应的包装类型;
一、认识包装类型
- 默认情况,当我们调用一个原始类型的属性或者方法时,会进行如下操作:
- 根据原始值,创建一个原始类型对应的包装类型对象;
- 调用对应的属性或者方法,返回一个新的值;
- 创建的包装类对象被销毁;
- 通常JavaScript引擎会进行很多的优化,它可以跳过创建包装类的过程在内部直接完成属性的获取或者方法的调用。
- 我们也可以自己来创建一个包装类的对象:
var s = new String("hello world");
- 注意事项:null、undefined没有任何的方法,也没有对应的“对象包装类”
二、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(包含)之间;
const PI = 3.1415926; console.log(PI.toFixed(2));
-
-
Number类方法补充:
- Number.parseInt(string[, radix]),将字符串解析成整数,也有对应的全局方法parseInt;
- Number. parseFloat(string),将字符串解析成浮点数,也有对应的全局方法parseFloat;
三、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次幂
-
利用random生成[x, y)的随机数
-
Math.floor(Math.random() * (y - x)) + x
-
四、String类
- 在开发中,我们经常需要对字符串进行各种各样的操作,String类提供给了我们对应的属性和方法。
- String常见的属性:
- length:获取字符串的长度;
4.1 基本使用
- 访问字符串的字符
- 通过字符串的索引 str[0]
- 通过str.charAt(pos)方法
- 它们的区别是索引的方式没有找到会返回undefined,而charAt没有找到会返回空字符串
- 字符串的遍历
- 普通for循环
- for…of遍历
4.2 修改字符串
- 在我们改变很多字符串的操作中,都是生成了一个新的字符串;
- 改变字符串大小的两个方法
- toLowerCase():将所有的字符转成小写;
- toUpperCase() :将所有的字符转成大写;
4.3 查找字符串
-
indexOf() 查找字符串位置
-
str.indexOf(searchvalue [, fromIndex ])
-
查找指定字符串第一次出现的位置,如果没找到匹配的字符串则返回 -1。
-
参数 描述 searchvalue 必需。规定需检索的字符串值。 fromIndex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 string Object.length - 1。如省略该参数,则将从字符串的首字符开始检索。
-
-
includes()是否包含字符串
-
str.includes(searchvalue [, position ])
-
如果找到匹配的字符串返回 true,否则返回 false。
-
参数 描述 searchvalue 必需,要查找的字符串。 position 可选,设置从那个位置开始查找,默认为 0。
-
4.4 判断开头或结尾
-
endsWith()判断字符串是否以指定的子字符串结尾(区分大小写)
-
str.endsWith(searchvalue [, length ])
-
如果字符串以指定的值结尾返回 true,否则返回 false。
-
参数 描述 searchvalue 必需,要搜索的子字符串。 length 设置字符串的长度。默认值为原始字符串长度 string.length。
-
-
startsWith()判断字符串是否以指定的子字符串开始
-
str.startsWith(searchvalue [, start ])
-
如果字符串是以指定的子字符串开头返回 true,否则 false。
-
参数 描述 searchvalue 必需,要查找的字符串。 start 可选,查找的开始位置,默认为 0。
-
4.5 替换字符串
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
str.replace( searchvalue,newvalue )
- 查找到对应的字符串,并且使用新的字符串进行替代;
4.6 获取子字符串
-
slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
- 使用 start(包含) 和 end(不包含) 参数来指定字符串提取的部分。
-
方法 选择方式 负值参数 slice(start, end) 从 start 到 end(不含 end) 允许 substring(start, end) 从start 到 end(不含 end) 负值代表 0 substr(start, length) 从 start 开始获取长为 length 的字符串 许 start 为负数
4.7 拼接字符串
- concat() 方法用于连接两个或多个字符串。
- 该方法没有改变原有字符串,但是会返回连接两个或多个字符串新字符串。
str.concat(str1 [, str2, ..., stringX ])
4.8 字符串分割
-
split() 方法用于把一个字符串分割成字符串数组。
-
split() 方法不改变原始字符串。
-
str.split( [separator [ , limit]] )
-
一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 string Object 分割成子串创建的。返回的数组中的字串不包括 separator 自身。
-
参数 描述 separator 可选。字符串或正则表达式,从该参数指定的地方分割 string Object。 limit 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
var message = "hello-world-my-name-is-zhang"
console.log(message.split("-"));