## 一、正则构造函数
- 在ES5中,new RegExp(/xyz/,'i') 会报错,因为不允许有第二个参数
- 在ES6中,第二个参数代表修饰符
```
var regEx = new RegExp(/xyz/i)
var regEy= new RegExp(/xyz/,'i') // 等价
var regEz = new RegExp(/xyz/ig,'i') // 会忽略之前的ig,而使用i修饰符
```
### 1.1 字符串的正则方法
- 字符串可以使用正则表达式的4个方法: replace(),match(),search(),split()
- ES6将这4个方法,在语言内部全部调用RegExp的实例方法。。
1. u修饰符
- 即为Unicode模式
## 二、Number的扩展
- Number.isFinite() 判断数值是否有限
- Number.isNaN() 判断数值是否是NaN
- Number.parseInt() ES6将parseInt,parseFloat移植到了Number对象上
- Number.parseFloat()
- Number.isInteger() 判断值是否为整数
```
// ES5
parseInt(15.12) // 15
parseFloat(123.456$) //123.456
// ES6
Number.parseInt(15.12) //15
# 这样做的目的是,减少全局性方法,使语言逐步模块化
```
## 三、Math对象的扩展
- Math.trunc() 去除一个数的小数部分,返回整数部分(对于非数值会先转为数据再计算)
- Math.sign() 判断数是正数、负数、还是0 ,有五种返回值: 参数为正数,返回+1,为负数,返-1,为0,返0,为-0返回-0,为其他值返NaN
- ES6新增了Math的对数方法
- ES6新增了Math的三角函数方法
- 指数运算
## 四、数组的扩展
- Array.from() 将类数组对象转为数组对象(类对象:类似数组的对象和可遍历的对象)
- arr.copyWithin(target,start,end) :从target位置开始替换,start位置开始读取,end停止读取。会修改原数组。
- find(cb) 查看数组中的值
- findIndex(cb) 查找数组中的索引
- fill(val,start,end) 填充已有数组,如果只有value则全部填充,start为开始填充的搁置,end为结束填充的位置
- entries() 遍历数组键值对
- keys() 遍历键名
- values() 遍历值
- inclues() 数组是否包含给定值(属于ES7),Babel转码器已经支持
```
[1,3,-1,6].find(n=> n<0)
[1,3,-1,6].find((value,index,arr)=>{
return value>0
})
# 遍历
for(let elem of ['a','b'].values()){
console.log(elem)
}
// a b
# inclues方法
[1,2,NaN].includes(NaN) //true
# ES5部署一个简易替代includes的方法
const contains=(()=>{
Array.prototype.includes
? (arr,value)=>arr.includes(arr,value)
: (arr,value)=> arr.come(el=>el===value)
})()
```