包装类
在JS中为我们提供了三个包装类:
String() Boolean() Number()
这三个也是 构造函数
通过这三个包装类可以创建基本数据类型的对象
例子:
var num = new Number(2);
var str = new String("hello");
var bool = new Boolean(false);
console.log(2 == num); // false
console.log(false === bool); // false
但是在实际应用中千万不要这么干。
当我们去操作一个基本数据类型的属性和方法时,
解析器会临时将其转换为对应的包装类,然后再去操作属性和方法,
操作完成以后再将这个临时对象进行销毁。
var s = 123;
s = s.toString();
// 这里是解析器将 s 通过包装类转换为了对象,再调用方法,完了再转回来
所以包装类是浏览器底层自己用的,临时将基本数据类型转换为相应的对象
例如 string 数据类型就可以调用 String对象的方法
Date
日期的对象,在JS中通过Date对象来表示一个时间
它是一个构造函数,可以创建对象
// 创建一个当前时间的对象
var d = new Date();
// 创建一个指定的时间对象
var d = new Date("月/日/年 时:分:秒");
方法:
方法名 | 描述 |
---|---|
.getDate() | 当前日期对象的几号(1-31) |
.getDay() | 返回当前日期对象的周几(0-6) 0 周日 1 周一 ... |
.getMonth() | 返回当前日期对象的月份(0-11) 0 一月 1 二月 ... |
.getFullYear() | 从 Date 对象以四位数字返回年份。 |
.getHours() | 返回 Date 对象的小时 (0 ~ 23)。 |
.getMinutes() | 返回 Date 对象的分钟 (0 ~ 59)。 |
.getSeconds() | 返回 Date 对象的秒数 (0 ~ 59)。 |
.getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999)。 |
.getTime() | 返回当前日期对象的时间戳 时间戳,指的是从1970年月1日 0时0分0秒,到现在时间的毫秒数 计算机底层保存时间都是以时间戳的形式保存的。 |
Date.now() | 可以获取当前代码执行时的时间戳 |
Math
Math属于一个工具类,它和Date不一样,他不是构造函数
所以它不需要我们创建对象,它里边封装了属性运算相关的常量和方法
我们可以直接使用它来进行数学运算相关的操作
属性:
属性名 | 描述 |
---|---|
Math.PI | 常量,圆周率(约等于3.1415926) |
Math.E | 算术常量 e,即自然对数的底数(约等于2.718) |
Math.SQRT2 | 2 的平方根(约等于 1.414) |
Math.LN2 | 2 的自然对数(约等于0.693) |
Math.LN10 | 10 的自然对数(约等于2.302) |
方法:
方法名 | 描述 |
---|---|
Math.abs() | 绝对值运算 |
Math.ceil() | 向上取整 |
Math.floor() | 向下取整 也可以用 parseInt(),这个主要用于字符串 而floor 只能用于数值,无法识别字符串的 |
Math.round() | 四舍五入取整 |
Math.random() | 生成一个[0, 1)之间的随机数 Math.floor(Math.random()*(y+1-x)+x); 数组:Math.floor(Math.random()*arr.length); 生成一个x~y之间的随机数 |
Math.pow(x,y) | 求 x 的 y 次幂 |
Math.sqrt() | 对一个数进行开方 |
Math.max() | 求多个数中最大值 |
Math.min() | 求多个数中的最小值 |
字符串的相关的方法
使用ES6中的字符串新方法
String.prototype.padStart(maxLength, fillString='') 或 String.prototype.padEnd(maxLength, fillString='')来填充字符串;
属性
属性名 | 描述 |
---|---|
length | 获取字符串的长度 |
方法
方法名 | 描述 |
---|---|
charAt() | 根据索引获取指定的字符 同 str[] |
charCodeAt() | 根据索引获取指定的字符编码 |
String.fromCharCode() | 根据字符编码获取字符,如果是16进制要加 0x String.fromCharCode(0x41) // A (65) |
concat() | 和数组一样,可以连接多个字符串和字符,和 + 一样 |
indexOf() | 检索字符串中是否有该内容 有则返回第一次出现的 索引下标,没有则返回 -1 可以设置第二参数,为从指定 索引下标,开始向后查找 |
lastIndexOf() | 和 indexOf() 一样,不过是从后往前找 也可以指定第二参数,从指定位置开始向前查找 |
slice(start,[end]) | 和数组用法一样,截取指定的内容,并将截取到内容返回,不会影响原变量 第一个:截取开始的位置(包括开始) 第二个:截取结束的位置(不包括结束) 可以省略第二个参数,如果省略则一直截取到最后 可以传负数,如果是负数则从后往前数 |
substr() | 和slice()基本一致,不同的是它第二个参数不是索引,而是截取的个数 |
substring() | 和slice()基本一致,不同的是它不能接受负值作为参数,如果设置一个负值,则会自动修正为 0 substring()中如果第二个参数小于第一个,自动调整位置 |
split() | 制定一个字符串作为参数,把字符串分割为字符串数组 如果传一个空串 xx.split(""),则将每一个字符拆分为一个元素,注意:不能加空格啊,不能是 " " 如果指定了一个原字符串没有的字符串,则将整个字符串作为一个元素 可以传递正则表达式,例如:xx.split(/[A-z]/) 不影响原字符串 |
toLowerCase() | 将字符串转换为 小写 并返回 不影响原字符串 |
toUpperCase() | 将字符串转换为 大写 并返回 |
sub() | 把字符显示为 下标 不影响原字符串 |
sup() | 把字符显示为 上标 |
trim() | 去除字符串两边的空白 不影响原字符串 |
支持正则表达的String方法
方法名 | 描述 |
---|---|
split() | 可以接收一个正则表达式,此时会根据正则表达式去拆分成数组 这个方法即是不设置全局匹配 g ,也会全部匹配拆分 |
search() | 和indexOf() 相似,返回第一次出现的下标,但不能设置第二参数 search() 支持正则表达式,但只会查找第一个,即使设置全局匹配也没用 |
match() | 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来 默认情况下match() 只会找到第一个符合要求的内容,找到以后就停止检索 可以设置正则表达式为全局匹配模式 xx.match(/[a-z]/gi); ,就会匹配到所有的内容match() 会将匹配到的内容封装到一个数组中返回 |
replace() | 可以将字符串中指定内容替换为新的内容 参数1:被替换的内容,可传一个正则表达式作为参数 参数2:新的内容,若是空串 "",则为删除 默认只会替换第一个,如果是正则,则可以添加匹配模式 g 来全局匹配 不影响原字符串 |