持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
js中的包装类
在代码中我们可以调用基本数据的方法, 如toString()方法, 是因为包装类的存在
当我们调用基本数据类型的方法时, 解析器临时为我们将之转换为对应的包装类型, 然后操作属性和方法, 这个过程完成以后, 再销毁其临时对象
let num = Number(3); // 数值型对象
let b = Boolean(true); // 布尔型的对象
let str = String('shaosiming'); // 字符串型的对象
console.log(typeof num + ':' + num);
console.log(typeof b + ':' + b);
console.log(typeof str + ':' + str);
js中的常用字符串的方法
indexOf可以接收两个参数, 第一个参数为要检索的内容, 第二个参数为要检索的开始索引
如果不传第二个参数, 则默认从索引0开始检索, 返回检索到的第一个参数第一次出现的位置
slice截取一段指定位置的内容, 接收两个参数, 第一个参数为开始索引, 第二个参数为结束索引.
注意: 包括开始索引的字符两不包括结束索引的字符
如果省略第二个参数, 则从开始索引一起截取到最后, 如果第二个参数是负数, 从后往前计算索引
let name = 'shaosiming';
// length
console.log(name.length); // 10
// 获取索引对应的字符
console.log(name[2]);
console.log(name.charAt(3));
// 获取对应字符的unicode编码
console.log(name.charCodeAt(3));
// 根据字符编码获取字符
console.log(String.fromCharCode(888));
// 检索指定内容的索引
console.log(name.indexOf('s'));
console.log(name.indexOf('s', 1));
console.log(name.lastIndexOf('s'));
console.log(name.lastIndexOf('s', 1));
// 截取一段内容
console.log(name.slice(2, 4));
console.log(name.substr(2, 4));
console.log(name.substring(2, 4));
// 大小写
console.log(name.toUpperCase());
console.log(name.toUpperCase().toLowerCase());
// 将字符串转换为数组
console.log('123, 456, 789'.split(','));
正则表达式
根据一定的规则来判断一个字符串是否符合该规则, 或者根据一定规则将一个字符串中的内容提取出来
正则的匹配模式
i: 忽略大小写
g: 全局匹配
正则的语法
| 或
[] 或
[^ ] 除了...
[a-z] 小写字母
[A-Z] 大写字母
[A-z] 任意字母
[0-9] 任意数字
^x 以...开头
X$ 以...结束
{n} 正好n次
{m,n} m到n次
{m,} 至少m次
+ {1,}至少1次
? {0,1} 0次或1次
* {0,} 0次或多次
带转义的字符
\ 在字符串和正则表达式中表示转义
. 表示任意字符
. 表示.
\ 表示\
\w {A-z0-9_} 代表字母数字下划线
\W {^A-z0-9_} 代表除了字母数字下划线
\d 任意数字
\D 除了数字
\s 空格
\S 除了空格
\b 单词边界
\B 除了单词边界
正则表达式的创建
有两种方式
每一种, let reg = new RegExp('正则表达式');
第二种, let reg = /正则表达式/;
// let reg = new RegExp('^1[2-9][0-9]{9}$')
let reg = /^1[2-9][0-9]{9}$/
console.log(reg.test('123456789012'));
/*
邮箱@前面的部分 至少3个字符 \w{3,}
邮箱@前面的部分 可以包含.和字母数字下划线, 可以没有也可以有多个 (.\w)*
@ 只有一个
邮箱@后面域名部分 字母数字 [A-z0-9]+
邮箱@后面顶级域名部分 (.[A-z]{2,5}){1,3}
*/
let reg2 = /^\w{3,}(.\w)*@[A-z0-9]+(.[A-z]{2,5}){1,3}$/
console.log(reg2.test('abc_abc@163.com'));
字符串方法与正则表达式结合使用
// 将字符串通过正则的规则转换为数组
console.log('1a2b3c4d5'.split(/[A-z]/));
// 在字符串中通过正则的方式搜索内容是否存在
console.log('1a3143222'.search(/1[0-9]3/));
// 将字符串中匹配上的内容提取出来放到一个数组中
console.log('1a2B3c4D5'.match(/[a-z]/ig));
// 将字符串中匹配的内容更换为新的字符串
console.log('1a2B3c4D5'.replace(/[a-z]/gi, '#'));
Math
Math相当于一个工具类, 我们可以直接使用Math这个类对象来直接调用它的方法
// π
console.log(Math.PI);
// 绝对值
console.log(Math.abs(-3));
// 向上取整
console.log(Math.ceil(1.001));
// 向下取整
console.log(Math.floor(1.999));
// 四舍五入
console.log(Math.round(1.23));
console.log(Math.round(1.51));
// x的y次幂
console.log(Math.pow(2, 3));
// 开方
console.log(Math.sqrt(16));
// 求最大值
console.log(Math.max(1, 2, 3, 4, 5));
// 求最小值
console.log(Math.min(1, 2, 3, 4, 5));
// 随机数
console.log(Math.round(Math.random() * 10));
// x到y的随机数
// Math.round(Math.random() * (y-x) + x)
console.log(Math.round(Math.random() * (15-11) + 11));
Date
在创建指定日期对象的时候, 格式是这样的
new Date('月/日/年, 时:分:秒');
注意: getDay()方法星期日-星期六是0 - 6
let now = new Date();
console.log(now);
// 获取年
console.log(now.getFullYear());
// 获取月
console.log(now.getMonth());
// 获取日
console.log(now.getDate());
// 获取星期几
console.log(now.getDay());
// 获取时
console.log(now.getHours());
// 获取分
console.log(now.getMinutes());
// 获取秒
console.log(now.getSeconds());
// 获取毫秒
console.log(now.getMilliseconds());
// 转换为时间戳
console.log(now.getTime());
// 当前时间的时间戳
console.log(Date.now());
// 创建一个指定的日期对象
let date = new Date('03/28/2022 08:30:45');
console.log(date);